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

【C#入門】ListDictionaryから指定したキーのエントリを削除する方法

C#のListDictionaryから、指定したキーを持つエントリを削除するには、Remove()メソッドを使用します。この記事では、実際のコード例とその実行結果を通じて、削除方法をわかりやすく解説します。

ListDictionaryとは

ListDictionaryは、System.Collections.Specialized名前空間に属するコレクションクラスで、内部的に単一リンクリストで実装されています。要素数が少ない(おおむね10件程度まで)コレクションに対して高速に動作するよう最適化されており、小規模なキーと値のペア管理に適しています。

指定したキーのエントリを削除する際は、引数に削除したいキーを渡してRemove()メソッドを呼び出します。該当するキーが存在しない場合でも例外はスローされず、コレクションは変更されません。

サンプルコード1:特定のキーを1つ削除する

まずは、2つのListDictionaryを作成し、片方から特定のキーを持つエントリを削除する基本的な例を見てみましょう。

using System;
using System.Collections;
using System.Collections.Specialized;

public class Demo {
   public static void Main() {
      ListDictionary dict1 = new ListDictionary();
      dict1.Add("A", "Books");
      dict1.Add("B", "Electronics");
      dict1.Add("C", "Smart Wearables");
      dict1.Add("D", "Pet Supplies");
      dict1.Add("E", "Clothing");
      dict1.Add("F", "Footwear");

      Console.WriteLine("ListDictionary1 の要素...");
      foreach(DictionaryEntry d in dict1) {
         Console.WriteLine(d.Key + " " + d.Value);
      }

      ListDictionary dict2 = new ListDictionary();
      dict2.Add("1", "One");
      dict2.Add("2", "Two");
      dict2.Add("3", "Three");
      dict2.Add("4", "Four");
      dict2.Add("5", "Five");
      dict2.Add("6", "Six");

      Console.WriteLine("\nListDictionary2 の要素...");
      foreach(DictionaryEntry d in dict2) {
         Console.WriteLine(d.Key + " " + d.Value);
      }

      Console.WriteLine("Dictionary 2 のキー/値ペア数 = " + dict2.Count);

      // キー「4」のエントリを削除
      dict2.Remove("4");

      Console.WriteLine("Dictionary 2 のキー/値ペア数(更新後) = " + dict2.Count);
   }
}

実行結果

ListDictionary1 の要素...
A Books
B Electronics
C Smart Wearables
D Pet Supplies
E Clothing
F Footwear
ListDictionary2 の要素...
1 One
2 Two
3 Three
4 Four
5 Five
6 Six
Dictionary 2 のキー/値ペア数 = 6
Dictionary 2 のキー/値ペア数(更新後) = 5

上記の出力から、Remove("4")を実行することで、キー「4」のエントリが削除され、要素数が6から5に減っていることが確認できます。

サンプルコード2:複数のキーをまとめて削除する

次に、Remove()メソッドを複数回呼び出して、複数のエントリを一度に削除する例を紹介します。

using System;
using System.Collections;
using System.Collections.Specialized;

public class Demo {
   public static void Main() {
      ListDictionary dict = new ListDictionary();
      dict.Add("1", "One");
      dict.Add("2", "Two");
      dict.Add("3", "Three");
      dict.Add("4", "Four");
      dict.Add("5", "Five");
      dict.Add("6", "Six");

      Console.WriteLine("ListDictionary の要素...");
      foreach(DictionaryEntry d in dict) {
         Console.WriteLine(d.Key + " " + d.Value);
      }

      Console.WriteLine("Dictionary のキー/値ペア数 = " + dict.Count);

      // キー「2」「3」「4」のエントリを順に削除
      dict.Remove("2");
      dict.Remove("3");
      dict.Remove("4");

      Console.WriteLine("Dictionary のキー/値ペア数(更新後) = " + dict.Count);
   }
}

実行結果

ListDictionary の要素...
1 One
2 Two
3 Three
4 Four
5 Five
6 Six
Dictionary のキー/値ペア数 = 6
Dictionary のキー/値ペア数(更新後) = 3

この例では、キー「2」「3」「4」に対応する3つのエントリが削除され、要素数が6から3になっています。

ポイントまとめ

  • Remove(Object key)メソッドで、指定したキーを持つエントリを削除できる。
  • 削除後はCountプロパティの値が自動的に更新される。
  • 存在しないキーを指定しても例外は発生せず、何も起こらない。
  • ListDictionaryは小規模なコレクションに適しており、大量データにはHashtableDictionary<TKey, TValue>が推奨される。
  1. 【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

  2. C#のArrayListからすべての要素を削除する方法

    C#のArrayListからすべての要素を削除するには、Clear()メソッドを使用します。Clear()メソッドを呼び出すと、コレクション内の全要素が削除され、要素数(Count)は0になります。 例1:ArrayListの全要素を削除する using System; using System.Collections; public class Demo { public static void Main(String[] args){ ArrayList list1 = new ArrayList(); list1.Add(A);