我的地图看起来像这样
private Map<String, LinkedHashSet<String>> map = new HashMap<>();
Run Code Online (Sandbox Code Playgroud)
在传统方法中,我可以通过按键检查为地图添加价值,如下所示
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);
}
Run Code Online (Sandbox Code Playgroud)
使用Java 8,我可以做这样的事情,与此同时我也得到相同的输出。
map.compute(node1, (k,v)-> {
if(v==null) {
v=new LinkedHashSet<>();
}
v.add(node2);
return v;
});
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来处理Java 8?
使用
map.computeIfAbsent(node1, k -> new LinkedHashSet<>()).add(node2);
Run Code Online (Sandbox Code Playgroud)
如果node1已在地图中找到,则等同于:
map.get(node1).add(node2);
Run Code Online (Sandbox Code Playgroud)
如果node1尚未在地图中,则等同于:
map.put(node1, new LinkedHashSet<>()).add(node2);
Run Code Online (Sandbox Code Playgroud)
这正是您要寻找的,甚至在文档中被描述为用例。
| 归档时间: |
|
| 查看次数: |
2706 次 |
| 最近记录: |