Lambda表达式、Stream流总结

156 阅读1分钟

最近在做一个项目,很多对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());

image.png

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