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的利与弊链接分享

Stream与SQL对比地址

Java编码与SQL对比地址

今日分享到此结束,谢谢大家!

以上是关于Java8新特性之Stream知识分享的主要内容,如果未能解决你的问题,请参考以下文章

Java8新特性之Stream知识分享

Java8新特性之Stream知识分享

Java8 新特性之集合操作Stream

Java8新特性Stream流之匹配与查找

Java8新特性Stream流之匹配与查找

Java8新特性之Stream API