java如何使这些简单而美丽?
当我把一个(KEY, VALUE)
放进一个像Map<String, List<String>>
这样的映射中,我想先检查这个键是否存在,以决定是否需要创建一个新列表时,我的Java代码通常如下所示:
Map<String, List<String>> example = new HashMap<>();
public void put(String k, String v){
if(example.containsKey(k)){
example.get(k).add(v);
return;
}
List<String> vs = new ArrayList<>();
vs.add(v);
example.put(k,vs);
}
看起来不太好。有没有办法让它更简单、更漂亮
# 1 楼答案
如果你有Java 8,你可以把它写成一行:
它使用lambda,因此
new ArrayList
仅在需要时创建(
k
和key
需要有不同的名称,因为它们是不同的变量)# 2 楼答案
可以说,这有点浪费——要求你得到你刚刚列出的清单——但在我看来,它更干净、更具表现力
# 3 楼答案
如果不能使用其他库或java 8,可以将整个映射打包,并在自己的类中构造
在你自己的课堂上:
把混乱限制在一个地方
在幕后隐藏你正在使用地图的脸
有一个地方可以移动任何附加逻辑