Lambda表达式Map.computeIfPresent()和Map.merge()

时间:2019-07-15 17:57:45

标签: java java-8 java-stream

我有一张地图。键是字符串,值是字符串列表。如果地图中没有键,我想插入键及其值,这是一个新创建的元素列表。如果该键已经存在于地图中,我只想通过向该列表添加一个元素来更新其值。可以用纯Java完成。但是我想通过使用Java 8 Map.computeIfAbsent()Map.computeIfPresent()方法来实现。另外,如果可能的话,我该如何使用Map.merge()来做到这一点。

Map<String,List<String>> listMap    = null;
listMap.computeIfAbsent(fiId, key ->    new ArrayList<>()).add("any value");
listMap.computeIfPresent(fiId, (key, values) -> values.add("any value"));

下面是我的合并语法。

listMap.merge(fiId, new ArrayList<>(Arrays.asList("any value")), (key, values) ->   ??????);

对于第一种情况,因为values.add()返回一个布尔值。如何将其转换为“列表”?

0 个答案:

没有答案