1、并发排序
调用多线程对数组拆分进行排序,最后在合并数组
Arrays.parallelSort(myArray);
2、Optional
存在即返回, 无则提供默认值
return user.orElse(null); //而不是 return user.isPresent() ? user.get() : null;
return user.orElse(UNKNOWN_USER);
存在即返回, 无则由函数来产生存在即返回, 无则由函数来产生
user.orElseGet(() -> getUser())
public static User getUser() {
User u = new User();
u.setUserName("张三");
return u;
}
存在才对它做点什么
user.ifPresent(tt -> {
System.out.println(tt.getUserName());
});
map 函数
当 user.isPresent()
为真, 获得它关联的 orders
, 为假则返回一个空集合时, 我们用上面的 orElse
, orElseGet
方法都乏力时, 那原本就是 map
函数的责任, 我们可以这样一行
return user.map(u -> u.getOrders()).orElse(Collections.emptyList())
//上面避免了我们类似 Java 8 之前的做法
if(user.isPresent()) {
return user.get().getOrders();
} else {
return Collections.emptyList();
}
map
是可能无限级联的, 比如再深一层, 获得用户名的大写形式
return user.map(u -> u.getUsername()).map(name -> name.toUpperCase()).orElse(null);