简单的理解,双冒号运算符就是java中的"方法引用",格式为:
类名 :: 方法名
例如 :
() -> new HashMap<>();
//可以被替换为
HashMap::new
这种[方法引用]或者说[双冒号运算]对应的参数类型是Function<T,R> T表示传入类型,R表示返回类型。
//原版
//lists数据类型为: HashMap<String , Map<String , String>>
public List<String> getList(String key){
List<String> list = lists.get(key);
if(list == null){
list = new ArrayList<>();
list.add(key);
}
return list;
}
//简化
public List<String> getList(String key) {
return lists.computeIfAbsent(key, k -> new ArrayList<>());
}
虽然对于可读性来说就会有变差,但是Lambda加双冒号也大大简化了代码的行数。