【发布时间】:2021-12-02 14:00:14
【问题描述】:
我创建了以下方法,将给定的 UUID 值与给定的整数添加到 map 变量中。
final Map<Integer, List<UUID>> map = new TreeMap<>();
private void addToMap(Integer key, UUID value) {
map.computeIfAbsent(key, val -> new ArrayList<>()).add(value);
}
通常我试图通过将 value 参数传递给 lambda 函数来使用 map.computeIfAbsent(key, value -> new ArrayList<>()).add(value);,它会抛出“变量'值'已在范围内定义”错误指向“值" 在.. value -> ... 部分。
我更新的addToMap 方法有效,但我认为val 毫无意义。那么,这个方法应该如何更新呢?
【问题讨论】:
-
我不认为你能做的比你已经做的更多。其他语言为此使用
_,但这是自 Java 9 以来的保留关键字 -
非常感谢。问完问题,看到
computeIfAbsent方法解释中有类似用法。所以,val 只在那个地方使用。所以,我可以像以前一样使用它。
标签: java lambda stream hashmap java-stream