2013-07-18 156 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")); 

字典值:[什么东西,重要]