C#
 Computer >> コンピューター >  >> プログラミング >> C#

【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 を繰り返し呼び出すような面倒な処理を書く必要がなく、範囲指定による一括削除をシンプルに実装できます。

  1. 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);

  2. JavaでArrayListから重複要素を削除する方法【Set・Stream API活用】

    JavaのSetインターフェースは、重複する要素を許容しないという特徴を持っています。このインターフェースのadd()メソッドは引数として受け取った要素をSetオブジェクトに追加し、追加が成功すればtrueを返します。一方、すでに存在する要素を追加しようとした場合、追加操作は失敗しfalseが返されます。この性質を利用することで、ArrayList内の重複要素を簡単に取り除くことができます。 Setを使って重複を削除する基本手順 ArrayListオブジェクトから冗長な要素を削除するには、以下の手順に従います。 対象となるArrayListを作成(または取得)します。 空のSetオブジェクト