什么是Java字典的Java等价物

时间:2016-03-17 18:36:10

标签: java dictionary hashtable

我在Python中有一个字典说

{ SERVER1 : [ (list1),(list2),....
  SERVER2 : [ (list2a),(list2b) ] }

它是否可以用Java实现? 我需要检查每个密钥是否存在然后我需要将列表添加到该密钥,如附加现有值而不覆盖 还需要读取键和值并遍历列表的每个值

请帮助。很抱歉问这些问题,因为这是我的第一个Java程序

2 个答案:

答案 0 :(得分:3)

在java中,字典是使用Map接口定义的。常见的实现是TreeMapHashMap

Map<String,List<String>> servers = new HashMap<>();

servers.put("SERVER1", new ArrayList<String>());
servers.get("SERVER1").add("list1");
servers.get("SERVER1").add("list2");
...

同样,ArrayListLinkedListList界面的常见实现。

答案 1 :(得分:0)

因为要保存与键关联的每个值,所以需要一个包含值的ArrayLists的HashMap。这个对象应该做你需要的:

public class HashOfLists<K, V> {

    HashMap<K, ArrayList<V>> map = new HashMap<>();

    public ArrayList<V> get(K key) {
        return map.get(key);
    }

    public void put(K key, V value) {
        ArrayList<V> existingValues = get(key);
        if (existingValues == null) existingValues = new ArrayList<>();
        existingValues.add(value);
        map.put(key, existingValues);
    }

}

要使用它,你会做一些像这样的事情:

HashOfLists<String, String> servers = new HashOfLists<>();
servers.put("SERVER3", "PROCESS A");
servers.put("SERVER3", "PROCESS B");

//Getting a list containing "PROCESS A" and "PROCESS B"
ArrayList<String> processes = servers.get("SERVER3");