gpt4 book ai didi

java-8 - 设置为值的Java 8 map 计算

转载 作者:行者123 更新时间:2023-12-05 00:15:59 25 4
gpt4 key购买 nike

我的 map 看起来像这样

private Map<String, LinkedHashSet<String>> map = new HashMap<>();

在传统方法中,我可以通过按键检查为 map 添加值(value),如下所示
public void addEdge(String node1, String node2) {
LinkedHashSet<String> adjacent = map.get(node1);
if (adjacent == null) {
adjacent = new LinkedHashSet();
map.put(node1, adjacent);
}
adjacent.add(node2);
}

使用Java 8,我可以做这样的事情,与此同时我也得到相同的输出。
map.compute(node1, (k,v)-> {
if(v==null) {
v=new LinkedHashSet<>();
}
v.add(node2);
return v;
});

有没有更好的方法来处理Java 8?

最佳答案


map.computeIfAbsent(node1, k -> new LinkedHashSet<>()).add(node2);

如果在 map 中已经找到 node1,它将等同于:
map.get(node1).add(node2);

如果 node1尚未在 map 中,则等效于:
map.put(node1, new LinkedHashSet<>()).add(node2);

这正是您要寻找的,甚至在 documentation中被描述为用例。

关于java-8 - 设置为值的Java 8 map 计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43163387/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com