2

我很好奇如何在 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));
}

然而,这对我来说是糟糕的编程。有没有更简单的语法可以用一条语句来完成?大多数已经提出的关于该主题的问题都是封闭的,因此没有什么帮助。

4

6 回答 6

9

Java 使用 HashMaps 而不是字典。

其他一些地图包括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());
}
于 2013-07-18T01:44:29.403 回答
3

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

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

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

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

还有其他几个实现Map接口的类,这些类对于在 Java 中使用 Dictionary 很有用(在某些情况下,有些类比其他类更适合使用)。

于 2013-07-18T01:45:40.133 回答
1

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

于 2013-07-18T01:44:17.197 回答
1

你可以检查

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

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

于 2013-07-18T01:49:47.507 回答
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();
于 2013-07-18T02:10:23.803 回答
1

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

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

字典值:[某事,重要]

于 2013-07-18T02:10:54.560 回答