1. ホーム
  2. c#

[解決済み] C# Java HashMap相当

2022-03-24 16:47:59

質問

Java の世界から C# の世界へ、HashMap に相当するものはあるのでしょうか?ない場合は、何がお勧めですか?

どのように解決するのですか?

Dictionary が最も近いと思われます。 System.Collections.Generic.Dictionary を実装しています。 System.Collections.Generic.IDictionary インタフェース (これは、Java の Map インターフェイス)。

注意すべき顕著な違いもあります。

  • アイテムの追加・取得
    • Java の HashMap には putget 項目を設定/取得するためのメソッド
      • myMap.put(key, value)
      • MyObject value = myMap.get(key)
    • C#の辞書は、以下を使用しています。 [] 項目の設定/取得のためのインデックス作成
      • myDictionary[key] = value
      • MyObject value = myDictionary[key]
  • null キー
    • ジャワの HashMap は null キーを許可します。
    • .NETの Dictionary を投げる。 ArgumentNullException NULLキーを追加しようとすると
  • 重複するキーを追加する
    • Java の HashMap は既存の値を新しい値で置き換えます。
    • .NETの Dictionary を使用すると、既存の値を新しい値に置き換えます。 [] のインデックスを作成します。 もしあなたが Add メソッドを呼び出すと、代わりに ArgumentException .
  • 存在しないキーの取得を試みている
    • Java の HashMap はnullを返します。
    • .NETの Dictionary を投げます。 KeyNotFoundException . を使用することができます。 TryGetValue メソッドの代わりに [] のインデックスを作成し、これを回避しています。
      MyObject value = null; if (!myDictionary.TryGetValue(key, out value)) { /* key doesn't exist */ }

Dictionary には ContainsKey メソッドは、先の2つの問題に対処するのに役立ちます。