优秀博客分享地址:
点击进入:(侵权请联系删除)
直奔主题
1:构造数据集合
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class M {
private String a;
private Integer c;
private String d;
}
M m=new M("001",99,"men");
M m1=new M("002",100,"women");
M m2=new M("003",110,"men");
M m3=new M("004",115,"men");
M m4=new M("004",115,"men");
M m5=new M("002",80,"women");
M m44=new M("044",115,"men");
List<M> MList=new ArrayList<M>();
MList.add(m);
MList.add(m1);
MList.add(m2);
MList.add(m3);
MList.add(m4);
MList.add(m5);
MList.add(m44);
2:对某一属性去重,例如业务上可用于校验是否属于同一属性
ArrayList<M> mArrayList = MList.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(M::getD))), ArrayList::new));
for (M m6 : mArrayList) {
System.out.println(m6);
}
if(mArrayList.size()>1){
System.out.println("收款人不同,不能生成付款单");
}
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/cd5da395a9fe89b6bd213eddad332a35.png)
3:对重复数据去重
List<M> collect = MList.stream().distinct().collect(Collectors.toList());
for (M m6 : collect) {
System.out.println(m6);
}
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/dafe447c4753250527981a57ebd454b9.png)
4:按照某一属性进行分组并统计数量
Map<String, Long> collect = MList.stream().collect(Collectors.groupingBy(M::getD, Collectors.counting()));
System.out.println(collect);
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/2a21e6f7faeaeb98ab87224a06627b01.png)
5:按照某一属性分组后在比较,求满足某一属性值中最小的数据
Map<String, M> collect = MList.stream().collect(Collectors.groupingBy(M::getD, Collectors.collectingAndThen(Collectors.minBy(Comparator.comparing(M::getC)), Optional::get)));
System.out.println(collect);
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/006fbc7b7716066b33b24ab298e5cb8e.png)
6:求某一属性值最大的对象
Optional<M> max = MList.stream().filter(s -> s.getC() != null).max(Comparator.comparing(M::getC));
System.out.println(max);
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/194bff5976835f040e17376034617282.png)
7:求某一属性数值平均值
Double collect = MList.stream().collect(Collectors.averagingDouble(M::getC));
System.out.println(collect);
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/813b2698d40ff64423bc350ca0b78c25.png)
8:获取某一属性的所有集合
List<String> collect = MList.stream().map(M::getA).collect(Collectors.toList());
for (String s : collect) {
System.out.println(s);
}
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/c51811eddd56b877401b4df9e394e18e.png)
关于使用Stream(java编码)与SQL的利与弊链接分享
Stream与SQL对比地址
Java编码与SQL对比地址
今日分享到此结束,谢谢大家!