如何在Java中创建字典?

时间:2013-07-18 01:41:42

标签: java collections dictionary

我很好奇如何在Java中创建字典。我知道Python有一个类似于dictionary = {"key": "something"}的字典设置。 我知道在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));
}

然而,这对我来说很糟糕。使用单个语句是否有更简单的语法?关于这个问题已经被问到的大多数问题都是关闭的,因此没什么帮助。

6 个答案:

答案 0 :(得分:9)

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());
}

答案 1 :(得分:3)

通常你可以像HashMap这样使用:

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

例如,现在您可以像使用Python中的字典一样使用此map对象。

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

还有其他一些实现Map接口的类对于在Java中使用Dictionary很有用(某些类在某些情况下比其他情况更好用)。

答案 2 :(得分:1)

Java中Dictionary的可能替代方法是HashMap。 您可以参考Oracle的文档以获取进一步的参考。 http://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html

答案 3 :(得分:1)

您可以查看

http://docs.oracle.com/javase/6/docs/api/java/util/Map.html

如果您担心性能,则应尝试使用TreeMap。我假设您更关心检索时间而不是插入检索时间。

答案 4 :(得分: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();

答案 5 :(得分:1)

一个单词可能包含多个含义。所以你可以使用MultiMap。

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

字典价值:[某事,重要]