Java8 Stream 流 一些使用整理
持续更新中
双循环判断值
原始写法
List<ChildModel> newChilds = new ArrayList();
for(Model model : models){
String code = model.getCode();
for(ChildModel childModel : childs){
if(code.equals(childModel.getCode())){
newChilds.add(childModel);
}
}
}
Stream 普通写法
List<String> codes = models.stream()
.map(item -> item.getCode())
.collect(Collectors.toList());
List<ChildModel> newChilds = childs.stream()
.filter(item -> codes.contains(item.getCode()))
.collect(Collectors.toList());
Stream filter + anyMatch写法
List<ChildModel> newChilds = childs.stream()
.filter(child -> models.stream()
.anyMatch(item -> item.getCode().equals(child.getCode())))
.collect(Collectors.toList());