如何在哈希图中将单个值添加到列表?

时间:2019-05-07 13:29:55

标签: java

我看过很多例子,但并不能完全理解。

我需要创建一个将新值插入到我的哈希图中已经填充的列表中的方法。我无法为自己的生活弄清楚该怎么做。任何人都可以帮助并解释其工作原理吗?

我已经创建了填充地图等的方法。我只是不知道如何创建只为特定键插入值的方法。

import java.util.*;


public class Singles
{
   // instance variables - replace the example below with your own
   private Map<String, List<String>> interests;

   /**
    * Constructor for objects of class Singles
    */
   public Singles()
   {
      // initialise instance variables
      super();
      this.interests = new HashMap<>();
   }


}

2 个答案:

答案 0 :(得分:1)

这是一张多地图。

public class MultiMap {
    private Map<String, List<String>> multiMap = new HashMap<>();

    public void put(String key, String value) {
        List<String> values = (this.multiMap.containsKey(key) ? this.multiMap.get(key) : new ArrayList<>());
        values.add(value);
        this.multiMap.put(key, values);
    }
}

答案 1 :(得分:0)

如果您使用的是Java 8或更高版本,则可以使用computeIfAbsent方法来处理没有与密钥相关联的列表时的情况:

public static void main(String[] args) {
    Map<String, List<String>> map = new HashMap<>();
    map.computeIfAbsent("key", k -> new LinkedList<>()).add("value");
}

您的方法可能如下所示:

public void put(String key, String value) {
    interests.computeIfAbsent(key, k -> new LinkedList<>()).add(value);
}