之前对List.Stream这个方法一直不怎么了解,都是在网上随便找一个方法就用了,后来觉得这样太不专业了,于是乎就对List.Stream方法做了一些整理,笔记如下:
1、filter:过滤流中的某些元素
方法案例:List<Project> listT1 = list.stream().filter(i->"1".equals(i.getId())).collect(Collectors.toList());
备注解读:
①Project是一个实体类;
②list是Project的一个集合;
③.stream()是把list转化成一个流;
④.filter(i->"1".equals(i.getId())) i是list的一个元素,后面的表达式时过滤条件;
⑤.collect(Collectors.toList()) 把得到的数据转化回list;
2、limit:获取前n个元素
方法案例:List<String> listT2 = list.stream().map(Project::getId).limit(3).collect(Collectors.toList());
备注解读:
①list是Project的一个集合;
②.map(Project::getId) 将List<Project>转化成list<String>,其中String为Project中的id字段
③.limit(3) 只要前三个元素
④.collect(Collectors.toList()) 把得到的数据转化回list;
3、skip:跳过元素,配合limit可以视线分页
等待ing~~~
4、distinct:去重
方法案例1:List<String> listT3 = list.stream().distinct().collect(Collectors.toList());
备注解读1:这个没什么好备注的,就是将List<String>中的相同元素只保留一个
另外说一下:如果想要按照实体类进行去重,这个就不能直接用distinct了,这里我暂时先记录一个方法
方法案例2:List<ProjectBasicsInformation> listT3 = lsitT.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(ProjectBasicsInformation::getCityName))), ArrayList::new));
备注解读2:这个方法我只是尝试了有效,但具体还没去研究,等空下来的在继续
5、sorted:排序
等待ing~~~