Java8新特性之Stream知识分享
Posted 我实在是想不出什么好听的昵称了啊
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java8新特性之Stream知识分享相关的知识,希望对你有一定的参考价值。
优秀博客分享地址:
直奔主题
1:构造数据集合
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author xiexianxin
* @create 2021-12-02 14:26
*/
@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("收款人不同,不能生成付款单");
3:对重复数据去重
List<M> collect = MList.stream().distinct().collect(Collectors.toList());
for (M m6 : collect)
System.out.println(m6);
4:按照某一属性进行分组并统计数量
Map<String, Long> collect = MList.stream().collect(Collectors.groupingBy(M::getD, Collectors.counting()));
System.out.println(collect);
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);
6:求某一属性值最大的对象
Optional<M> max = MList.stream().filter(s -> s.getC() != null).max(Comparator.comparing(M::getC));
System.out.println(max);
7:求某一属性数值平均值
Double collect = MList.stream().collect(Collectors.averagingDouble(M::getC));
System.out.println(collect);
8:获取某一属性的所有集合
List<String> collect = MList.stream().map(M::getA).collect(Collectors.toList());
for (String s : collect)
System.out.println(s);
关于使用Stream(java编码)与SQL的利与弊链接分享
今日分享到此结束,谢谢大家!
以上是关于Java8新特性之Stream知识分享的主要内容,如果未能解决你的问题,请参考以下文章