2013-07-18 135 views
2

我很好奇如何在Java中創建字典。我知道Python有一個類似於dictionary = {"key": "something"}的字典設置。 我知道還有其他方法可以在Java中執行此操作,例如創建兩個同步列表並在每個列表中使用相同的位置來模擬字典。如何在Java中創建字典?

ArrayList<Object> keys = new ArrayList<Object>(); 
ArrayList<Object> values = new ArrayList<Object>(); 
public void add(Object key, Object value){ 
    keys.add(key); 
    values.add(value); 
} 
// And a subsequent return function 
public Object getValue(Object key) { 
    return values.get(keys.indexOf(key)); 
} 

但是,這個尖叫對我來說是不好的編程。有一個簡單的語法來做一個單一的陳述嗎?已經提出的關於這個問題的大多數問題都是封閉的,因此沒有什麼幫助。

+11

使用'java.util.Map' [執行](http://docs.oracle.com/javase/7/docs/api/java /util/HashMap.html)。 – McDowell

+0

爲什麼不使用數據庫呢?當你處理數千個單詞時。 – Azad

+1

@Azad:他指的是字典中的鍵/值對集合。 –

回答

8

Java uses HashMaps instead of dictionaries.

其他一些地圖包括TreeMap。所不同的是在後端(一個使用哈希表,另外採用了紅黑樹)

例子:

import java.util.HashMap; 
import java.util.Iterator; 
import java.util.Map; 
import java.util.Set; 
.... 

Map<String,String> mMap = new HashMap<String, String>(); 
mMap.put("key", "something"); 
Iterator iter = mMap.entrySet().iterator(); 
while (iter.hasNext()) { 
    Map.Entry mEntry = (Map.Entry) iter.next(); 
    System.out.println(mEntry.getKey() + " : " + mEntry.getValue()); 
} 
2

一般來說,你可以使用HashMap像這樣:

Map<String, String> map = new HashMap<String, String>(); 

例如,現在你可以像使用Python中的字典一樣使用這個map對象。

map.put("Key", "Value"); 
System.out.println(map.get("Key")); 

有跡象表明,實現Map接口是在Java利用字典有用的(有些是更好地使用在某些情況下比其他的)其他幾類。

1

爲了簡潔的地圖製作(以及許多其他有用的東西),我推薦Guava。具體見ImmutableMap.ofImmutableMap.Builder

實例:

Map<String, Integer> map = ImmutableMap.of(
    "one", 1, 
    "two", 2, 
    "three", 3 
); 

Map<String, Integer> map = new ImmutableMap.Builder<String, Integer>() 
    .put("one", 1) 
    .put("two", 2) 
    .put("three", 3) 
    .build(); 
1

一個字可以包含多於一個的含義。所以你可以使用MultiMap。

MultiMap dictionary = new MultiValueMap(); 
    dictionary.put("key", "something"); 
    dictionary.put("key", "Important"); 
    System.out.println("dictionary Value : "+dictionary.get("key")); 

字典值:[什麼東西,重要]