【问题标题】:What is the Java equivalent of a Python Dictionary [duplicate]什么是 Python 字典的 Java 等价物 [重复]
【发布时间】:2016-07-04 07:11:02
【问题描述】:

我有一个 Python 字典说

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

Java 也可以实现吗? 我需要检查每个键是否存在,然后我需要将列表添加到该键中,例如在不覆盖的情况下附加现有值 还需要读取key和value并遍历list的每个值

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

【问题讨论】:

  • 是的,使用Map<String, List<String>>
  • 本站有搜索功能。在发布新问题之前使用它。

标签: java dictionary hashtable


【解决方案1】:

在 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 接口的常见实现。

【讨论】:

【解决方案2】:

因为要保存与键关联的每个值,所以需要一个包含值的 ArrayList 的 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");

【讨论】:

  • 我正在读取一个文件说 Server1|cmd|blablal Server2|cmd|blablala Server1|cmd2|blablal Server2|cmd4|blabla 下面的代码返回每个服务器的最后一个值
  • 我正在读取一个文件说 Server1|cmd|blablal Server2|cmd|blablala Server1|cmd2|blablal Server2|cmd4|blabla 下面的代码返回每个服务器的最后一个值 Server1|cmd2|blablal Server2| cmd4|blabla 但我想要一些像 {Server1 :[(cmd|blablal),(cmd2|blablal)],Server2:[(cmd|blabla),(cmd4|blabla)}
  • 代码是 Map map = new HashMap(); while((line=br.readLine())!=null) { String[] line_split = line.split("\\|"); if(line_split.length == 3) { map.put(line_split[0], (line_split[1] +"|"+ line_split[2])); } } System.out.println(map.keySet()); for (Map.Entry entry : map.entrySet()) { String key = entry.getKey();字符串值 = entry.getValue(); System.out.println(key); System.out.println(值); }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-12
  • 2017-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-04
  • 2011-04-12
相关资源
最近更新 更多