C#のArrayListで指定範囲にコレクションの要素をコピーする方法(SetRangeメソッド)
C#でコレクションの要素をArrayListの指定した範囲にコピーするには、SetRangeメソッドを使用します。この記事では、SetRangeメソッドの基本的な使い方を、サンプルコードと実行結果とともにわかりやすく解説します。
SetRangeメソッドとは
SetRangeメソッドは、ArrayListクラスに用意されているメソッドで、指定したインデックスの位置から、別のコレクション(ICollection)の要素を一括してコピーし、既存の要素を上書きします。構文は以下の通りです。
public virtual void SetRange(int index, ICollection c);
- index … コピー先の開始位置を示すインデックス(0から始まります)
- c … コピー元となる、ICollectionインターフェースを実装したコレクション
なお、上書きされるのはコピー元の要素数分だけなので、ArrayList全体の要素数(Count)は変わりません。
例1:先頭の要素を置き換える
まず、ArrayListの先頭(インデックス0)から文字列配列の要素をコピーする例を見てみましょう。
using System;
using System.Collections;
public class Demo {
public static void Main() {
ArrayList arrList = new ArrayList();
arrList.Add("A");
arrList.Add("B");
arrList.Add("C");
arrList.Add("D");
Console.WriteLine("ArrayListの要素...");
for (int i = 0; i < arrList.Count; i++) {
Console.WriteLine(arrList[i]);
}
string[] str = { "Demo", "Text" };
arrList.SetRange(0, str);
Console.WriteLine("コピー後...");
for (int i = 0; i < arrList.Count; i++) {
Console.WriteLine(arrList[i]);
}
}
}
実行結果
このプログラムを実行すると、次のような出力が得られます。
ArrayListの要素... A B C D コピー後... Demo Text C D
SetRange(0, str)によって、インデックス0と1の要素「A」「B」が「Demo」「Text」で上書きされました。一方、「C」「D」は元のまま保持されています。
例2:中間の位置から要素を置き換える
続いて、ArrayListの中間位置(インデックス2)からコピーする例を見てみましょう。
using System;
using System.Collections;
public class Demo {
public static void Main() {
ArrayList arrList = new ArrayList();
arrList.Add("One");
arrList.Add("Two");
arrList.Add("Three");
arrList.Add("Four");
arrList.Add("Five");
arrList.Add("Six");
arrList.Add("Seven");
arrList.Add("Eight");
Console.WriteLine("ArrayListの要素...");
for (int i = 0; i < arrList.Count; i++) {
Console.WriteLine(arrList[i]);
}
string[] str = { "Demo", "Text" };
arrList.SetRange(2, str);
Console.WriteLine("コピー後...");
for (int i = 0; i < arrList.Count; i++) {
Console.WriteLine(arrList[i]);
}
}
}
実行結果
ArrayListの要素... One Two Three Four Five Six Seven Eight コピー後... One Two Demo Text Five Six Seven Eight
この例では、SetRange(2, str)によって、インデックス2と3の「Three」「Four」が「Demo」「Text」に置き換えられました。このように、SetRangeメソッドを使えば、ArrayList内の任意の位置にある連続した要素を、別のコレクションの内容で簡単に差し替えることができます。
まとめ
- SetRangeメソッドは、指定したインデックス以降にコレクションの要素をコピー(上書き)する
- ArrayListの要素数は変化せず、コピー元の要素数分だけ上書きされる
- コピー対象外の要素はそのまま維持される
-
【Java入門】Collections.shuffle()でコレクションの要素をシャッフルする方法
この記事では、Javaでコレクション(List)の要素をシャッフル(ランダムに並び替え)する方法について詳しく解説します。 Collectionフレームワークは、複数のオブジェクトを格納・操作するための統一的なアーキテクチャを提供する仕組みです。Java Collections Frameworkを利用すれば、検索、ソート、挿入、操作、削除といった、データに対するほぼすべての操作を実現できます。 要素のシャッフルには、java.util.Collectionsクラスが提供するshuffle()メソッドを使用します。第2引数にRandomインスタンスを渡すことで、乱数生成の挙動を制御することも可
-
JavaでArrayListのすべての要素を削除する方法(clearメソッドの使い方)
JavaのArrayListからすべての要素を一括で削除したい場合は、clear()メソッドを使用します。この記事では、実際のコード例を通じて、ArrayListの全要素を削除する手順をわかりやすく解説します。1. 要素を持つArrayListを作成するまず、複数の要素を格納したArrayListを用意しましょう。以下の例では、Integer型のArrayListに7つの数値を追加しています。ArrayList<Integer> arrlist = new ArrayList<Integer>(5); arrlist.add(25); arrlist.add(50);