最近在做一个项目,很多对List集合的操作用到了Lambda表达式和Stream流,于是趁着这次机会总结一下我在其中用到的操作。直接上代码。
filter: 过滤
list.stream().filter(x->x.length()==3).collect(Collectors.toList());
distinct: 去重 (列举我项目中的例子)
根据AllFieldVo中的executionId进行去重
List<AllFieldVo> allFields = scoreMapper.getAllFieldInformation(projectVersionId);
List<Long> executionIds = allFields.stream().map(AllFieldVo::getExecutionId).distinct().collect(Collectors.toList());
sum :求和
根据list对象中某一个属性求和
int sum = list.stream().mapToInt(User::getAge).sum();
sort: 排序
根据List集合中某一个属性排序
根据age排序,单字段排序
list.sort(Comparator.comparing(User::getAge));
对多个属性排序,先id,后name
list.sort(Comparator.comparing(User::getId).thenComparing(User::getName));
map: 根据 list 对象中某一个属性生成新的 list
List<String> idToList = list.stream().map(User::getName).collect(Collectors.toList());
Foreach:
批量更改List集合中的某个属性
list.forEach(item -> {item.setAge(18);});
输出
list.forEach(System.out::println);
Collect : 将list集合转化为map集合
Map<String, Integer> collect = list.stream().collect(Collectors.toMap(User::getName, User::getId));
待续......用到什么操作再更新吧
参考链接\
blog.csdn.net/wxw1997a/ar…
blog.csdn.net/weixin_4465…
zhuanlan.zhihu.com/p/339801081