C#のArrayListから特定のオブジェクトの最初の出現を削除する方法
C#のArrayListから特定のオブジェクトを削除したい場合、Remove()メソッドを使用します。このメソッドの特徴は、リスト内に同じオブジェクトが複数存在する場合でも、最初に見つかった出現(最初の一致要素)のみを削除するという点です。それ以降に出現する同じ要素はそのまま残ります。
Remove()メソッドの基本動作
Remove()メソッドは、引数に指定したオブジェクトと等しい最初の要素を検索して削除します。主なポイントは以下のとおりです。
- 指定したオブジェクトが複数ある場合、最初の1つだけが削除される
- 指定したオブジェクトが存在しない場合、例外はスローされず、リストは変更されない
- 要素を削除すると、残りの要素は自動的に前に詰められ、Countも減少する
サンプルコード1:重複要素から最初の出現を削除する
以下の例では、「G」と「I」が2回含まれるArrayListから、Remove()メソッドを使って最初の出現だけを削除しています。
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("Elements in 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");
list2.Add("G");
list2.Add("I");
Console.WriteLine("Elements in ArrayList2...");
foreach (string res in list2) {
Console.WriteLine(res);
}
Console.WriteLine("Count of elements in ArrayList2 = " + list2.Count);
// 最初に出現した "G" のみを削除
list2.Remove("G");
Console.WriteLine("Elements in ArrayList2... (UPDATED)");
foreach (string res in list2) {
Console.WriteLine(res);
}
Console.WriteLine("Count of elements in ArrayList2 (Updated) = " + list2.Count);
}
}実行結果
上記のコードを実行すると、次のような出力が得られます。
Elements in ArrayList1... A B C D E F G H I Elements in ArrayList2... A B C D E F G H I G I Count of elements in ArrayList2 = 11 Elements in ArrayList2... (UPDATED) A B C D E F H I G I Count of elements in ArrayList2 (Updated) = 10
実行結果を見ると、list2には元々「G」が2つ含まれていましたが、Remove("G")を実行した後も末尾側の「G」は残っており、先頭に近い方の「G」だけが削除されていることがわかります。要素数も11から10に減少しています。
サンプルコード2:単一の要素を削除する
続いて、各要素が1回しか出現しないケースの例です。「Tablet」を削除してみます。
using System;
using System.Collections;
public class Demo {
public static void Main(String[] args) {
ArrayList list = new ArrayList();
list.Add("Laptop");
list.Add("Desktop");
list.Add("Wearables");
list.Add("Tablet");
list.Add("Notebook");
list.Add("Ultrabooks");
Console.WriteLine("Elements in ArrayList...");
foreach (string res in list) {
Console.WriteLine(res);
}
Console.WriteLine("Count of elements in ArrayList = " + list.Count);
// "Tablet" を削除
list.Remove("Tablet");
Console.WriteLine("Elements in ArrayList... (UPDATED)");
foreach (string res in list) {
Console.WriteLine(res);
}
Console.WriteLine("Count of elements in ArrayList (Updated) = " + list.Count);
}
}実行結果
上記のコードを実行すると、次のような出力が得られます。
Elements in ArrayList... Laptop Desktop Wearables Tablet Notebook Ultrabooks Count of elements in ArrayList = 6 Elements in ArrayList... (UPDATED) Laptop Desktop Wearables Notebook Ultrabooks Count of elements in ArrayList (Updated) = 5
「Tablet」がリストから取り除かれ、後続の要素が自動的に詰められていることが確認できます。要素数も6から5に減少しました。
まとめ
ArrayListから特定のオブジェクトの最初の出現を削除するには、Remove()メソッドを使います。重複する要素があっても削除されるのは最初の1つだけであり、すべての出現を削除したい場合はループ処理などでRemove()を繰り返し呼び出す必要があります。なお、新規開発では型安全なList<T>の使用が推奨される点にも留意しておきましょう。
-
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オブジェクト