名前空間 System.Collections.Generic
自己紹介
ようこそ、開発者の旅人よ。私は大地の女神「SortedDictionary」
私はいつも整然とした秩序を保つ存在。データをキーに基づいて昇順に並べ、見通しの良いコードの大地を作り上げるわ。
基本機能
「SortedDictionary」は、キーと値のペアを扱うデータ構造なの。
他のコレクションと違って、キーを常に昇順にソートして管理するのが私の特技よ。これにより、どんな場面でもすぐにデータを取り出せる利便性を提供するの。
内部では二分探索木を使っているから、データの検索や挿入、削除の効率もいいわよ。
「Dictionary」との違い
「Dictionary」と私「SortedDictionary」の違いを語るわね。
「Dictionary」はハッシュテーブルを使っていて、順序の保証がないわ。データが必要な順序で並ぶ保証がないときに使うのが良い選択ね。
一方で、私は順序を大切にする存在。キーの昇順で常に整列するから、順序が必要な場面では私を選んでほしいわ。
役割と特徴
私の役割は秩序と整理。大量のデータがあっても、キーを自然な順序で並べ替えて保持するわ。ソートされていることで、範囲ベースの処理や先頭から順に処理する場合に特に便利よ。
注意点
気をつけてほしいのは、キーが重複できないこと。
また、大量のデータがある場合、私の内部構造の特性上、パフォーマンスが「Dictionary」より劣る場面もあるわ。用途に応じて使い分けるのが賢い選択よ。
カスタマイズと拡張性
キーのソート順はデフォルトで昇順だけど、自分でカスタムコンパレータを提供すれば、独自の順序で並べ替えることもできるの。例えば、降順に並べたい場合も、問題なく対応するわ。
サンプルコード
using System; using System.Collections.Generic; class Program { static void Main() { // SortedDictionaryのインスタンスを作成 SortedDictionary<Guid, string> sortedDictionary = new SortedDictionary<Guid, string>(); // データを追加 (キーはGUIDで生成) sortedDictionary.Add(Guid.NewGuid(), "データ1"); sortedDictionary.Add(Guid.NewGuid(), "データ2"); sortedDictionary.Add(Guid.NewGuid(), "データ3"); // データを表示 (キーがソートされた順序で出力される) Console.WriteLine("データ一覧 (キー順):"); foreach (var kvp in sortedDictionary) { Console.WriteLine($"キー: {kvp.Key}, 値: {kvp.Value}"); } // 特定のキーを検索 var searchKey = new Guid("01234567-89AB-CDEF-0123-456789ABCDEF"); if (sortedDictionary.ContainsKey(searchKey)) { Console.WriteLine($"キー {searchKey} が見つかりました: {sortedDictionary[searchKey]}"); } else { Console.WriteLine($"キー {searchKey} は存在しません。"); } // データを削除 var removeKey = new Guid("12345678-90AB-CDEF-1234-567890ABCDEF"); if (sortedDictionary.Remove(removeKey)) { Console.WriteLine($"キー {removeKey} を削除しました。"); } else { Console.WriteLine($"キー {removeKey} は削除できませんでした (存在しない可能性)。"); } // 範囲を抽出して表示 Console.WriteLine("範囲処理:"); foreach (var kvp in sortedDictionary) { if (kvp.Key.CompareTo(Guid.NewGuid()) > 0) { Console.WriteLine($"キー: {kvp.Key}, 値: {kvp.Value}"); } } } }
解説
このサンプルコードでは、「SortedDictionary」を使ってGUIDをキー(キーの重複をさけたいだけ)にしてデータを管理しています。
また、キーが常に昇順で管理されているので、順序に基づく操作や検索が簡単です。用途に応じて「SortedDictionary」を選択し、秩序のあるデータ管理を実現してください。
降順で管理するSortedDictionaryのサンプルコード
using System; using System.Collections.Generic; class Program { static void Main() { // カスタムコンパレータを使って降順でソート SortedDictionary<Guid, string> sortedDictionary = new SortedDictionary<Guid, string>( Comparer<Guid>.Create((x, y) => y.CompareTo(x)) ); // データを追加 (キーはGUIDで生成) sortedDictionary.Add(Guid.NewGuid(), "データ1"); sortedDictionary.Add(Guid.NewGuid(), "データ2"); sortedDictionary.Add(Guid.NewGuid(), "データ3"); // データを表示 (キーが降順にソートされて出力される) Console.WriteLine("降順にソートされたデータ一覧:"); foreach (var kvp in sortedDictionary) { Console.WriteLine($"キー: {kvp.Key}, 値: {kvp.Value}"); } // 最小値と最大値を取得 Console.WriteLine("最大のキー:"); Console.WriteLine(sortedDictionary.Keys.Max()); Console.WriteLine("最小のキー:"); Console.WriteLine(sortedDictionary.Keys.Min()); // 特定のキーを検索 var searchKey = Guid.NewGuid(); // 新たに作成したGUIDを検索 if (sortedDictionary.ContainsKey(searchKey)) { Console.WriteLine($"キー {searchKey} が見つかりました: {sortedDictionary[searchKey]}"); } else { Console.WriteLine($"キー {searchKey} は存在しません。"); } } }
解説
このコードでは、カスタムコンパレータを使用して「SortedDictionary」がデフォルトの昇順ではなく降順でソートされるようにしています。
降順でソートするためには、Comparer<Guid>.Create
を使い、比較ロジックを逆転させるだけで簡単に実現できます。
0 件のコメント:
コメントを投稿