2009-10-08 87 views
73

我是Python的長期用戶,非常喜歡使用字典的方式。它們非常直觀,易於使用。是否有相當於Python的字典的Java?我聽說過使用hashmaps和hashtables的人。有人可以解釋使用哈希表和hashmaps與Python的字典的相似之處和不同之處嗎?Java相當於Python字典

回答

72

Python的dict類是Python文檔非正式地稱爲「mapping types」的實現。在內部,dict是使用散列表實現的。

Java的HashMap類是Map接口的實現。在內部,HashMap是使用散列表實現的。

在語法上有一些細微的差異,我相信實現的調整方式稍有不同,但總的來說它們是完全可以互換的。

+9

沒有提供示例:( – 2016-09-13 22:07:51

+1

@kami:你想要什麼樣的例子? – 2016-09-14 03:40:05

+1

任何一個例子都說明了python字典在運行中的java等價物,一個有用的答案包含了一些例子,因爲大多數人來這裏看例子並在他們的代碼中使用它們 – 2016-09-14 16:26:16

3

據我所知(我實際上沒有使用java)字典只是hashmap /哈希表的另一個名稱。

http://www.fluffycat.com/Java/HashMaps/獲取代碼似乎他們以非常相似的方式使用,有一點額外的Java鍋爐板。

+2

的Java甚至有一個由Hashtable實現的Dictionary接口。雖然HashMap通常是首選。 – 2009-10-08 21:48:05

+0

@Michael Myers:字典已被棄用,Oracle建議使用Map來代替http://docs.oracle.com/javase/7/docs/api/java/util/Dictionary.html – 2015-03-26 16:02:36

4

這兩者之間的一個區別是dict對於哪些數據類型可以充當關鍵字有更嚴格的要求。 Java將允許任何對象作爲一個鍵 - 雖然你應該注意確保該對象的方法返回一個反映其內部狀態的唯一值。 Python需要密鑰來適應其hashable的定義,該定義指定對象的哈希代碼在其生命週期內絕不應該改變。

+1

這是真的,但它並沒有被兩種語言實際執行。顯然,在Java'hashCode()'方法或Python'__hash __()'方法中,您應該嘗試返回反映內部狀態的唯一值。無論是Java還是Python,如果你有一個可變對象,它可能不應該是一個散列表鍵,所以從'hashCode()'或'__hash __()'方法拋出一個異常是有意義的。 – 2009-10-09 21:57:41

10

字典和地圖的想法是相似的。兩者都包含像

key1:value1, key2:value2 ... and so on 

在Java元素,Map實現不同的方式像HashMap,或TreeMapput(), get()操作類似於

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 

見HashMap中的文檔中java8 https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html