我在Python中有一个字典说
{ SERVER1 : [ (list1),(list2),....
SERVER2 : [ (list2a),(list2b) ] }
它是否可以用Java实现? 我需要检查每个密钥是否存在然后我需要将列表添加到该密钥,如附加现有值而不覆盖 还需要读取键和值并遍历列表的每个值
请帮助。很抱歉问这些问题,因为这是我的第一个Java程序
答案 0 :(得分:3)
在java中,字典是使用Map
接口定义的。常见的实现是TreeMap
和HashMap
:
Map<String,List<String>> servers = new HashMap<>();
servers.put("SERVER1", new ArrayList<String>());
servers.get("SERVER1").add("list1");
servers.get("SERVER1").add("list2");
...
同样,ArrayList
和LinkedList
是List
界面的常见实现。
答案 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");