回答:
Pythonのdict
クラスは、Pythonドキュメントが非公式に「マッピングタイプ」と呼ぶものの実装です。内部的にdict
は、ハッシュテーブルを使用して実装されています。
JavaのHashMap
クラスは、Map
インターフェースの実装です。内部的にHashMap
は、ハッシュテーブルを使用して実装されています。
構文にはいくつかの小さな違いがあり、実装は少し異なって調整されていると思いますが、全体としては完全に交換可能です。
辞書とマップの考え方は似ています。どちらにも次のような要素が含まれています
key1:value1, key2:value2 ... and so on
Javaでは、Map
のような様々な方法で実装されHashMap
、またはTreeMap
その他put(), get()
の動作は同様です
import java.util.HashMap;
Map map = new HashMap();
// Put elements to the map
map.put("Ram", new Double(3434.34));
map.put("Krishna", new Double(123.22));
map.put("Hary", new Double(1378.00));
//to get elements
map.get("Krishna"); # =123.22
map.get("Hary"); # = 1378.00
java8のHashMapのドキュメントを参照してくださいhttps://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html
私が知っている限り(私は実際にはJavaを使用していません)、辞書はハッシュマップ/ハッシュテーブルの単なる別名です。
http://www.fluffycat.com/Java/HashMaps/からコードを取得すると、Javaのボイラープレートが少し追加された非常によく似た方法で使用されているようです。
2つの違いの1つは、dict
どのデータ型がキーとして機能できるかについて、より厳しい要件があることです。Javaは、すべてのオブジェクトがキーとして機能することを許可します。ただし、オブジェクトのhashCode()
メソッドがその内部状態を反映する一意の値を返すように注意する必要があります。Pythonでは、オブジェクトのハッシュコードが存続期間中に変更されないように指定するhashableの定義に適合するキーが必要です。
hashCode()
メソッドまたはPython __hash__()
メソッドのいずれかで、内部状態を反映する一意の値を返そうとする必要があります。JavaまたはPythonのいずれかで、可変オブジェクトがある場合、それはおそらくハッシュテーブルキーであってはならないので、hashCode()
または__hash__()
メソッドから例外をスローすることは理にかなっています。