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

C#でListDictionaryを作成する方法!基本操作をサンプルコード付きで解説

ListDictionaryとは?

ListDictionaryは、System.Collections.Specialized名前空間に属するコレクションクラスで、キーと値のペアを単方向リンクリストの形式で格納します。内部的にハッシュテーブルを持たないため、要素数が少ないコレクション(目安は10項目程度まで)では高速に動作し、小規模なデータ管理に適しています。

この記事では、C#でListDictionaryを作成し、基本的な操作を行う方法をサンプルコードと実行結果とともに解説します。

例1:ListDictionaryの作成と基本プロパティの確認

次のコードでは、ListDictionaryを作成して要素を追加し、各種プロパティやContainsメソッドの動作を確認しています。

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

public class Demo {
   public static void Main() {
      ListDictionary dict = new ListDictionary();
      dict.Add("1", "SUV");
      dict.Add("2", "セダン");
      dict.Add("3", "多目的車");
      dict.Add("4", "コンパクトカー");
      dict.Add("5", "SUV");
      dict.Add("6", "セダン");
      dict.Add("7", "多目的車");
      dict.Add("8", "コンパクトカー");
      dict.Add("9", "クロスオーバー");
      dict.Add("10", "電気自動車");

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

      Console.WriteLine("\nListDictionaryは固定サイズか? = " + dict.IsFixedSize);
      Console.WriteLine("ListDictionaryは読み取り専用か? = " + dict.IsReadOnly);
      Console.WriteLine("ListDictionaryは同期されているか? = " + dict.IsSynchronized);
      Console.WriteLine("キー「K」は存在するか? = " + dict.Contains("K"));
      Console.WriteLine("キー「9」は存在するか? = " + dict.Contains("9"));
   }
}

実行結果

ListDictionaryの要素一覧...
1 SUV
2 セダン
3 多目的車
4 コンパクトカー
5 SUV
6 セダン
7 多目的車
8 コンパクトカー
9 クロスオーバー
10 電気自動車

ListDictionaryは固定サイズか? = False
ListDictionaryは読み取り専用か? = False
ListDictionaryは同期されているか? = False
キー「K」は存在するか? = False
キー「9」は存在するか? = True

コードの解説

  • Addメソッド:キーと値のペアをListDictionaryに追加します。
  • foreach + DictionaryEntry:格納されたすべてのキーと値を順番に取り出して表示します。
  • IsFixedSize / IsReadOnly / IsSynchronized:それぞれ「固定サイズか」「読み取り専用か」「スレッドセーフ(同期済み)か」をbool値で返すプロパティです。
  • Containsメソッド:引数に指定したキーが存在するかどうかを判定します。「9」は登録済みのためTrue、「K」は未登録のためFalseとなります。

例2:複数のListDictionaryを操作する

続いて、複数のListDictionaryを作成し、参照の代入・等価比較・Clearメソッドによる全要素削除を確認する例を見てみましょう。

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

public class Demo {
   public static void Main() {
      ListDictionary dict1 = new ListDictionary();
      dict1.Add("A", "書籍");
      dict1.Add("B", "家電");
      dict1.Add("C", "ウェアラブル端末");
      dict1.Add("D", "ペット用品");
      dict1.Add("E", "衣類");
      dict1.Add("F", "靴");

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

      ListDictionary dict2 = new ListDictionary();
      dict2.Add("1", "一");
      dict2.Add("2", "二");
      dict2.Add("3", "三");
      dict2.Add("4", "四");
      dict2.Add("5", "五");
      dict2.Add("6", "六");

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

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

      ListDictionary dict3 = new ListDictionary();
      dict3 = dict2; // dict2への参照を代入

      Console.WriteLine("\nListDictionary3はListDictionary2と等しいか? = " + (dict3.Equals(dict2)));

      dict3.Clear();
      Console.WriteLine("Dictionary3のキー/値ペアの数 = " + dict3.Count);
   }
}

実行結果

ListDictionary1の要素一覧...
A 書籍
B 家電
C ウェアラブル端末
D ペット用品
E 衣類
F 靴

ListDictionary2の要素一覧...
1 一
2 二
3 三
4 四
5 五
6 六
Dictionary2のキー/値ペアの数 = 6
ListDictionary3はListDictionary2と等しいか? = True
Dictionary3のキー/値ペアの数 = 0

コードの解説

  • Countプロパティ:ListDictionaryに格納されているキーと値のペアの数を取得します。
  • Equalsメソッド:「dict3 = dict2」は新しいコピーではなくdict2への参照を代入しているだけなので、両者は同じオブジェクトを指し、比較結果はTrueになります。
  • Clearメソッド:すべての要素を削除します。dict3とdict2が同一インスタンスを共有しているため、dict3.Clear()を実行するとdict2の内容も空になる点に注意してください。

まとめ

ListDictionaryは、少数のキーと値のペアを扱うのに適した軽量なコレクションです。要素の追加(Add)、検索(Contains)、件数取得(Count)、全削除(Clear)といった基本操作を押さえておけば、小規模データの管理をシンプルに行えます。要素数が多くなる場合は、パフォーマンス面で有利なHashtableやDictionary<TKey, TValue>の利用を検討するとよいでしょう。

  1. Outlookカレンダーに祝日を追加・削除する方法【保存・印刷の手順も解説】

    今年の祝日がいつになるのか気になったことはありませんか?そんなときは、Outlookカレンダーをチェックしてみましょう。最新バージョンのOutlookでは、祝日や大切な予定の日付をカレンダーに簡単に追加できます。新旧すべてのバージョンのOutlookには、多くの国や宗教の祝日データが用意されており、自由に追加することが可能です。 本記事では、Microsoft Outlookで祝日カレンダーを追加・削除する方法をチュートリアル形式でわかりやすく解説します。祝日カレンダーには世界中の主要な祝日やイベントが表示されるため、休暇や外出、重要なイベント、パーティーなどの計画を立てるのに大変役立ちます。

  2. Apple IDの作成方法を完全解説|子ども用アカウントや2ファクタ認証の設定まで

    Apple製品やサービスを使いこなすうえで、Apple IDは欠かせない存在です。幸い、その作成はとても簡単。この記事では、自分用・お子様用のApple IDの作り方から、強固なセキュリティ設定、ファミリー共有グループの始め方まで、わかりやすく解説します。 Apple IDを作成する手順 Apple IDは、Apple公式サイトのApple IDページ(appleid.apple.com)にアクセスし、「Apple IDを作成」をクリックするだけで登録できます。 appleid.apple.com は、Apple IDの作成と管理を行うためのオンライン窓口です Apple IDの登録にあたっ