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

C#のStringCollectionから最初に一致する要素を削除する方法

System.Collections.Specialized名前空間に属するStringCollectionクラスから、指定した文字列の最初の出現(オカレンス)だけを削除したい場合は、Remove()メソッドを使用します。

Remove()メソッドの重要な特徴は、同じ値が複数含まれている場合でも、最初に見つかった1つの要素のみを削除するという点です。残りの同一の値はそのまま保持されます。また、指定した文字列がコレクション内に存在しない場合でも例外はスローされず、何も変化しません。

サンプルコード1:重複する値から最初の1つを削除する

次の例では、"100" が2つ含まれるStringCollectionから "100" を1つだけ削除しています。

using System;
using System.Collections.Specialized;

public class Demo {
    public static void Main() {
        StringCollection stringCol = new StringCollection();
        String[] arr = new String[] { "100", "200", "100", "400", "500" };

        Console.WriteLine("Array elements...");
        foreach (string res in arr) {
            Console.WriteLine(res);
        }

        stringCol.AddRange(arr);
        Console.WriteLine("Total number of elements = " + stringCol.Count);

        // 最初に一致した "100" のみを削除
        stringCol.Remove("100");

        Console.WriteLine("Total number of elements now = " + stringCol.Count);
    }
}

実行結果

Array elements...
100
200
100
400
500
Total number of elements = 5
Total number of elements now = 4

元の配列には "100" が2箇所(1番目と3番目)に含まれていますが、Remove("100")を実行した後も要素数は5から4へと1つ減っただけです。これは先頭側の "100" のみが削除され、3番目の "100" が残っていることを示しています。

サンプルコード2:複数の異なる値を順に削除する

続いて、8つの要素を持つStringCollectionから、複数の異なる値を続けて削除する例を見てみましょう。

using System;
using System.Collections.Specialized;

public class Demo {
    public static void Main() {
        StringCollection stringCol = new StringCollection();
        String[] arr = new String[] { "10", "20", "30", "40", "50", "60", "70", "80" };

        Console.WriteLine("Array elements...");
        foreach (string res in arr) {
            Console.WriteLine(res);
        }

        stringCol.AddRange(arr);
        Console.WriteLine("Total number of elements = " + stringCol.Count);

        // 値を1つずつ削除
        stringCol.Remove("50");
        stringCol.Remove("60");
        stringCol.Remove("70");

        Console.WriteLine("Total number of elements now = " + stringCol.Count);
    }
}

実行結果

Array elements...
10
20
30
40
50
60
70
80
Total number of elements = 8
Total number of elements now = 5

この例では、"50"・"60"・"70" の3つの要素を個別に削除しているため、要素数は8から5に減少します。

ポイントまとめ

  • Remove(string)は、最初に一致した要素のみを削除します。
  • 削除対象の値が存在しない場合でも、例外は発生せずコレクションは変更されません。
  • 同じ値をすべて削除したい場合は、IndexOf()を使ったwhileループなどで、一致しなくなるまで繰り返しRemove()を呼び出す必要があります。
  • 削除後のコレクションの要素数は、Countプロパティで確認できます。
  1. JavaでLinkedListから要素を削除する方法【サンプルコード付き】

    この記事では、JavaのLinkedList(リンクリスト)から要素を削除する方法について詳しく解説します。java.util.LinkedListクラスは、双方向リンクリスト(doubly-linked list)として期待される一連の操作を提供します。インデックスを指定した操作では、リストの先頭と末尾のうち、指定されたインデックスに近い方から要素をたどって処理が行われるという特徴があります。以下に具体的な例を示します。入力:The list is defined as: [Java, Scala, Python, JavaScript, C++]期待される出力:The list after

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