【问题标题】:Java Hash Map(several values for 1 key)Java Hash Map(1 个键的多个值)
【发布时间】:2020-02-16 11:08:41
【问题描述】:

如何将多个值添加到哈希映射中的一个键?

HashMap<String, ArrayList<String>> phonebook = new HashMap<>();

比如我想phonebook.put("Mike","123")phonebook.put("Mike","321") 然后我想获取关键 Mike 的所有值。

【问题讨论】:

标签: java arraylist hashmap


【解决方案1】:

您可以为此使用computeIfAbsent

phonebook.computeIfAbsent("Mike", k -> new ArrayList<>()).add("123");
phonebook.computeIfAbsent("Mike", k -> new ArrayList<>()).add("321");

这将避免在插入之前检查键是否存在以及并发是否重要,这将是一个原子操作。

【讨论】:

    【解决方案2】:

    您不能像这样向ArrayList 插入值,您需要先对其进行初始化,然后再使用add。您可以为此使用computeIfAbsent

    public void addToList(HashMap<String, ArrayList<String>> phonebook, String key, String value) {
        phonebook.computeIfAbsent(key, k -> new ArrayList<>()).add(value);
    }
    
    HashMap<String, ArrayList<String>> phonebook = new HashMap<>();
    addToList(phonebook, "Mike", "123");
    addToList(phonebook, "Mike", "321");
    

    要获取所有值,请使用get() 获取列表

    System.out.print(phonebook.get("Mike")); // [123, 321]
    

    或者

    for (String number: phonebook.get("Mike")) {
        System.out.println(number);
    }
    

    并获取地图中的所有值

    for (String key: phonebook.keySet()) {
        System.out.println(key + ": ");
        for (String number: phonebook.get(key)) {
            System.out.println(number);
        }
    }
    

    【讨论】:

      【解决方案3】:
      猜你喜欢
      • 2012-04-20
      • 1970-01-01
      • 2011-12-16
      • 1970-01-01
      • 2016-07-04
      • 2020-08-06
      • 2021-12-28
      • 2017-04-23
      • 1970-01-01
      相关资源
      最近更新 更多