【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は小規模なコレクションに適しており、大量データにはHashtableやDictionary<TKey, TValue>が推奨される。
-
【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
-
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);