【C#】ArrayListからRemoveRangeメソッドで要素の範囲を一括削除する方法
C#のArrayListから連続する複数の要素を一度に削除したい場合は、RemoveRangeメソッドを使用します。このメソッドには「削除を開始するインデックス」と「削除する要素数」の2つの引数を渡すだけで、指定範囲の要素をまとめて削除できます。
RemoveRangeメソッドの構文
public virtual void RemoveRange(int index, int count);
- index … 削除範囲の開始位置を示す、0から始まるインデックス
- count … 削除する要素の個数
例えば list.RemoveRange(3, 2) と呼び出すと、インデックス3の要素から2個分(インデックス3と4)が削除されます。なお、index + count がリストの要素数(Count)を超えると ArgumentOutOfRangeException がスローされるため注意が必要です。
例1:ArrayListから範囲を指定して要素を削除する
using System;
using System.Collections;
public class Demo {
public static void Main(String[] args){
ArrayList list1 = new ArrayList();
list1.Add("A");
list1.Add("B");
list1.Add("C");
list1.Add("D");
list1.Add("E");
list1.Add("F");
list1.Add("G");
list1.Add("H");
list1.Add("I");
Console.WriteLine("ArrayList1の要素一覧...");
foreach (string res in list1) {
Console.WriteLine(res);
}
ArrayList list2 = new ArrayList();
list2.Add("A");
list2.Add("B");
list2.Add("C");
list2.Add("D");
list2.Add("E");
list2.Add("F");
list2.Add("G");
list2.Add("H");
list2.Add("I");
Console.WriteLine("ArrayList2の要素一覧...");
foreach (string res in list2) {
Console.WriteLine(res);
}
Console.WriteLine("ArrayList1とArrayList2は等しいか? = " + list1.Equals(list2));
// インデックス3から2個の要素(DとE)を削除
list2.RemoveRange(3, 2);
Console.WriteLine("範囲指定で削除した後のArrayList2の要素一覧...");
foreach (string res in list2) {
Console.WriteLine(res);
}
}
}
出力結果
ArrayList1の要素一覧... A B C D E F G H I ArrayList2の要素一覧... A B C D E F G H I ArrayList1とArrayList2は等しいか? = False 範囲指定で削除した後のArrayList2の要素一覧... A B C F G H I
ポイント解説
RemoveRange(3, 2) を呼び出すことで、インデックス3に相当する「D」と、その次のインデックス4の「E」が削除されました。また、Equalsメソッドが False を返している点にも注目してください。ArrayListクラスは Equals をオーバーライドしていないため、既定の動作では参照の同一性が比較されます。その結果、中身の要素が完全に同じでも、別々のインスタンスであれば False となります。
例2:複数の要素をまとめて削除する
続いて、別の例を見てみましょう。今度は7つの文字列を持つArrayListから、先頭以外の6つの要素をまとめて削除します。
using System;
using System.Collections;
public class Demo {
public static void Main(String[] args){
ArrayList list1 = new ArrayList();
list1.Add("A");
list1.Add("B");
list1.Add("C");
list1.Add("D");
list1.Add("E");
list1.Add("F");
list1.Add("G");
list1.Add("H");
list1.Add("I");
Console.WriteLine("ArrayList1の要素一覧...");
foreach (string res in list1) {
Console.WriteLine(res);
}
ArrayList list2 = new ArrayList();
list2.Add("One");
list2.Add("Two");
list2.Add("Three");
list2.Add("Four");
list2.Add("Five");
list2.Add("Six");
list2.Add("Seven");
Console.WriteLine("ArrayList2の要素一覧...");
foreach (string res in list2) {
Console.WriteLine(res);
}
// インデックス1から6個の要素(Two〜Seven)を削除
list2.RemoveRange(1, 6);
Console.WriteLine("範囲指定で削除した後のArrayList2の要素一覧...");
foreach (string res in list2) {
Console.WriteLine(res);
}
}
}
出力結果
ArrayList1の要素一覧... A B C D E F G H I ArrayList2の要素一覧... One Two Three Four Five Six Seven 範囲指定で削除した後のArrayList2の要素一覧... One
ポイント解説
RemoveRange(1, 6) により、インデックス1の「Two」からインデックス6の「Seven」までの6個の要素が削除され、「One」だけが残りました。このように RemoveRange メソッドを使えば、Remove を繰り返し呼び出すような面倒な処理を書く必要がなく、範囲指定による一括削除をシンプルに実装できます。
-
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);
-
JavaでArrayListから重複要素を削除する方法【Set・Stream API活用】
JavaのSetインターフェースは、重複する要素を許容しないという特徴を持っています。このインターフェースのadd()メソッドは引数として受け取った要素をSetオブジェクトに追加し、追加が成功すればtrueを返します。一方、すでに存在する要素を追加しようとした場合、追加操作は失敗しfalseが返されます。この性質を利用することで、ArrayList内の重複要素を簡単に取り除くことができます。 Setを使って重複を削除する基本手順 ArrayListオブジェクトから冗長な要素を削除するには、以下の手順に従います。 対象となるArrayListを作成(または取得)します。 空のSetオブジェクト