将值添加到Map中已存在的键的列表中

Joe*_*Joe 2 java arraylist hashmap

晚间!

我有以下地图:

HashMap<String, ArrayList> myMap = new HashMap<String, ArrayList>();
Run Code Online (Sandbox Code Playgroud)

然后,我向其中添加了以下数据:

ArrayList myList = new ArrayList();
myList.add("Test 1");
myList.add("Test 2");
myList.add("Test 3");
myMap.put("Tests", myList);
Run Code Online (Sandbox Code Playgroud)

这给我留下了以下数据:

关键:测试


值:测试1,测试2,测试3

我的问题是,如何将新值添加到我现有的键上?因此,例如,如何将值“ Test 4”添加到键“ Tests”上。

谢谢。

Rog*_*gue 5

我建议使用Map#computeIfAbsent,以始终确保List从地图检索a :

private final Map<String, List<String>> example = new HashMap<>();

private List<String> getList(String key) {
    return this.example.computeIfAbsent(key, k -> new ArrayList<>());
}

//elsewheres
getList("test").add("foobar");
getList("test").forEach(System.out::println); // "foobar"
Run Code Online (Sandbox Code Playgroud)

这意味着,如果地图不包含的条目key,它将使用提供的lambda生成键的新值并将其返回。