Java の世界から C# の世界に移った場合、HashMap に相当するものはありますか? ない場合は何をお勧めしますか?
ベストアンサー1
Dictionary
System.Collections.Generic.Dictionary
おそらく最も近いでしょう。System.Collections.Generic.IDictionary
インターフェース(Java のインターフェースに似ていますMap
)。
知っておくべきいくつかの注目すべき違いは次のとおりです。
- アイテムの追加/取得
- JavaのHashMapには、アイテムを設定/取得するためのメソッド
put
とメソッドがあります。get
myMap.put(key, value)
MyObject value = myMap.get(key)
- C#の辞書は
[]
アイテムの設定/取得にインデックス を使用しますmyDictionary[key] = value
MyObject value = myDictionary[key]
- JavaのHashMapには、アイテムを設定/取得するためのメソッド
null
キー- Javaでは
HashMap
nullキーが許可されます - .NETでは、nullキーを追加しようとすると
Dictionary
エラーが発生します。ArgumentNullException
- Javaでは
- 重複キーの追加
- Java は
HashMap
既存の値を新しい値に置き換えます。 - .NET では、インデックスを
Dictionary
使用すると、既存の値が新しい値に置き換えられます[]
。Add
メソッドを使用すると、代わりに がスローされますArgumentException
。
- Java は
- 存在しないキーを取得しようとしています
- Java は
HashMap
null を返します。 - .NETでは
Dictionary
がスローされますKeyNotFoundException
。TryGetValue
[]
これを回避するには、インデックスの代わりに次の方法を使用します。
MyObject value = null; if (!myDictionary.TryGetValue(key, out value)) { /* key doesn't exist */ }
- Java は
Dictionary
のにはContainsKey
前の 2 つの問題に対処するのに役立つ方法です。