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

【C#】OrderedDictionaryの作成方法と使い方をわかりやすく解説

C#で順序付きディクショナリ(OrderedDictionary)を扱うには、System.Collections.Specialized名前空間に用意されているOrderedDictionaryクラスを使用します。このクラスは、キーと値のペアを「追加した順序」のまま保持できるコレクションで、通常のHashtableとは異なり挿入順が保証されるのが大きな特徴です。

OrderedDictionaryの主な特徴

  • キーと値のペアを追加した順序どおりに格納・列挙できる
  • 各要素はDictionaryEntryとして取り出せる
  • Add()で追加、Remove()で削除、Countで要素数を取得できる
  • KeysプロパティやValuesプロパティでキー・値のコレクションにアクセスできる

例1:要素の追加・表示・削除

以下は、C#でOrderedDictionaryを作成し、要素を追加・表示・削除するサンプルコードです。

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

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

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

      Console.WriteLine("OrderedDictionaryの要素数 = " + dict.Count);

      // キー"E"の要素を削除
      dict.Remove("E");
      Console.WriteLine("OrderedDictionaryの要素数(削除後)= " + dict.Count);
   }
}

実行結果

このプログラムを実行すると、次のような出力が得られます。

OrderedDictionaryの要素一覧...
A:書籍
B:家電
C:スマートウェアラブル
D:ペット用品
E:衣類
F:靴
OrderedDictionaryの要素数 = 6
OrderedDictionaryの要素数(削除後)= 5

このように、foreachループで要素を列挙すると、追加した順序どおりにキーと値が表示されます。また、Remove()メソッドでキー"E"を削除すると、要素数が6から5に減っていることが確認できます。

例2:すべてのキーを配列として取得して表示する

続いて、Keysプロパティでキーのコレクションを取得し、CopyTo()メソッドで文字列配列にコピーして表示する例を見てみましょう。

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

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

      // キーのコレクションを取得して配列へコピー
      ICollection col = dict.Keys;
      String[] strKeys = new String[dict.Count];
      col.CopyTo(strKeys, 0);

      Console.WriteLine("キーの一覧を表示...");
      for (int i = 0; i < dict.Count; i++) {
         Console.WriteLine(strKeys[i]);
      }
   }
}

実行結果

このプログラムを実行すると、登録済みのキーが順番に表示されます。

キーの一覧を表示...
1
2
3
4
5
6
7
8

まとめ

C#のOrderedDictionaryを使えば、キーと値のペアを挿入順のまま管理できます。要素の追加・削除はAdd()/Remove()、要素数の確認はCount、キーの一括取得はKeysプロパティとCopyTo()の組み合わせで簡単に実現できます。挿入順を保持したい辞書型データが必要な場面で、ぜひ活用してみてください。

  1. PowerPointでラジアルリスト(放射状リスト)を作成する方法

    一瞬で聴衆の注目を集められるリストを作りたいと思ったことはありませんか?Microsoft PowerPointでは「ラジアルリスト(放射状リスト)」を作成でき、プレゼンテーションに魅力的な印象を与えることができます。ラジアルリストは、複数の要素がひとつの中心的なアイデアへと集約されていく様子を視覚的に表現できる図です。 PowerPointでラジアルリストを作成する手順 PowerPointでSmartArtを使ってラジアルリストを作成するには、以下の手順に従ってください。 1. SmartArtでラジアルリストを挿入する まず、PowerPointを起動します。 挿入タブをクリックし、イラ

  2. PowerPointでタイムラインを作成する方法|SmartArtとテンプレートの使い方を解説

    タイムラインチャートとは、個人の人生における主な出来事やプロジェクトのマイルストーンなど、一連の出来事を視覚的に表現した図のことです。タイムラインを作成した後も、日付の追加や移動、さまざまなスタイルやレイアウトの適用、色の変更などを自由に行えます。この記事では、Microsoft PowerPointでSmartArtまたはタイムラインテンプレートを使ってタイムラインを作成する方法をわかりやすく解説します。 タイムラインを作成するには? タイムラインを作成するには、まず何を表現したいのかを明確にし、出来事を示すタイトルを決める必要があります。そのうえで、描きたい期間(セグメント)を決定し、タイ