java8新特性–java8集合操作大全–关于Stream看这一篇就够了
小编最近在项目中review代码的时候发现好多同学还不太会使用java8中对于集合操作的新玩法,特出此篇博文来总结一下在java8中关于集合的骚操作,如果文章对您有一点点帮助的话,还望您点赞收藏防止迷路哟~
前言:关于下面具体例子中所使用到的实体以及集合进行说明如下
StudentDTO:学生信息实体类
List<StudentDTO> list:学生集合
1.筛选出所有年龄为18的学生集合
//筛选出所有年龄为18的学生集合
List<StudentDTO> ageList = list
.stream()
.filter(student-> 18=student.getAge())
.collect(Collectors.toList());
2.按照学生年龄升序排序
//按照学生年龄升序排序
List<StudentDTO> sortList = list
.stream()
.sorted(Comparator.comparing(StudentDTO::getAge)).
collect(Collectors.toList());
3.按照学生年龄降序排序
//按照学生年龄降序排序
List<StudentDTO> sortList = list
.stream()
.sorted(Comparator.comparing(StudentDTO::getAge).reversed())
.collect(Collectors.toList());
4.取出所有学生的姓名并去重
//取出所有学生的姓名并去重
List<String> nameList = list
.stream()
.map(StudentDTO::getName)
.distinct()
.collect(Collectors.toList());
5.按照学生姓名首字母排序
// 排序实现 按照中文首字母拼音排序
Comparator comparator = Collator.getInstance(Locale.CHINA);
Collections.sort(list, (e1, e2) -> {
return comparator.compare(e1.getName(), e2.getName());
});
6.去除List集合中的null元素
//去除List集合中的null元素
List<StudentDTO> notNullList = list.removeAll(Collections.singleton(null));
7.List转为Map
//List转为Map
Map<Long, StudentDTO> map = list
.stream()
.collect(Collectors.toMap(StudentDTO::getId, Function.identity(), (key1, key2) -> key2));
8.List对某个属性进行分组(eg:按照年龄分组)
//List对某个属性进行分组(eg:按照年龄分组)
Map<Long, List<StudentDTO>> map = list.stream().collect(Collectors.groupingBy(StudentDTO::getAge));
9.找出年龄最大的学生
//找出年龄最大的学生
StudentDTO studentDTO = list.stream().max(Comparator.comparing(StudentDTO ::getAge)).orElse(null);
10.找出年龄最小的学生
//找出年龄最大的学生
StudentDTO studentDTO = list.stream().min(Comparator.comparing(StudentDTO ::getAge)).orElse(null);
至此,java8关于集合操作算是入门啦!!!
小伙伴们如果在项目中遇到问题可以在线讨论哟!!!
本文章纯属个人学习记录,如有问题,请不吝赐教。