首页 > 编程语言 >【Java】Stream的一些日常操作

【Java】Stream的一些日常操作

时间:2023-05-11 11:13:05浏览次数:38  
标签:Stream Java stream Collectors Object list collect 日常 getWarehouseCode

1  前言

 Java8 出来的 stream 写法让我们对数据的处理带来了一些写法上的增进,这节就简单记录下平时使用的 stream 的一些操作,关于 stream 的书籍,可以看一下 Java8实战,里边会有两三章讲解我们的 stream。

2  常用记录

 

// 根据单个属性或者多个属性去重
List<Object> data = list.stream().collect(Collectors.collectingAndThen(
        Collectors.toCollection(
                () -> new TreeSet<>(Comparator.comparing(item -> item.getWarehouseCode() + item.getBusinessDate()))
        ), ArrayList::new
));
// 多次分组
Map<String, Map<String, List<Object>>> data = list.stream().collect(Collectors.groupingBy(Object::getWarehouseCode,
                Collectors.groupingBy(Object::getRange)));
// 分组后取第一条记录
Map<String, Object> data = list.stream().collect(Collectors.groupingBy(Object::getWarehouseCode,
                Collectors.collectingAndThen(Collectors.toList(), item -> item.get(0))));
// 分组后根据某个属性求和 int型
Map<String, Integer> data = list.stream().collect(Collectors.groupingBy(Object::getWarehouseCode,
        Collectors.summingInt(Object::getNum)));
// 分组后根据某个属性求和 BigDecimal型
Map<String, BigDecimal> data = list.stream().collect(Collectors.groupingBy(Object::getWarehouseCode,
        Collectors.mapping(Object::getAvg, Collectors.reducing(BigDecimal.ZERO, BigDecimal::add))));
// 分组后收集某个属性的值
Map<String, List<String>> data = list.stream().collect(Collectors.groupingBy(Object::getWarehouseCode,
        Collectors.mapping(Object::getCode, Collectors.toList())));
Map<String, String> data = list.stream().collect(Collectors.groupingBy(Object::getWarehouseCode,
        Collectors.mapping(Object::getCode, Collectors.joining(","))));
// 分组后合并每个list
List<Object> data = list.stream().collect(Collectors.groupingBy(Object::getWarehouseCode))
        .values().stream().flatMap(Collection::stream).collect(Collectors.toList());
// 分组指定map类型
LinkedHashMap<String, List<Object>> data = list.stream().collect(Collectors.groupingBy(Object::getWarehouseCode, LinkedHashMap::new, Collectors.toList()));

 

 

 

加油

标签:Stream,Java,stream,Collectors,Object,list,collect,日常,getWarehouseCode
From: https://www.cnblogs.com/kukuxjx/p/17207178.html

相关文章

  • java线程池和多线程的使用详解
    Java多线程和线程池使用java多线程实现的几种方法1.继承Thread类继承Thread类,重写run方法,创建线程类对象调用start方法启动线程。publicclassThreadDemo{/***继承Thread类创建线程*/publicstaticclassMyThreadextendsThread{publ......
  • 【Java】Java 继承
    继承继承是面向对象最显著的一个特性。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。<理解:继承就是子类继承父类的特征和行为,即子类从父类继承方法,使得子类具有父类相同的行为。> 示例: 父类packagecom.ext;publicclassDe......
  • java8 数组使用流和收集器格式化拼接数组中字符串并以“,”间隔,且首尾分别用 “[” 和
    方法:Stringresult=artist.stream().map(Art::getName).collect(Collectors.joining(",","[","]"));(注:joining(CharSequencedelimiter,CharSequenceprefix,CharSequencesuffix)方法接受一个字符串序列作为拼接符,并在拼接完成后添加传递的前缀和后缀。假如我们传递的分......
  • Zookeeper_java_API的简介
    1.Zookeeper_java_API的简介1.1)org.apache.zookeeper.ZookeeperZookeeper是在Java客户端主类,负责建立与zookeeper集群的会话,并提供方法进行操作。1.2)org.apache.zookeeper.WatcherWatcher接口表示一个标准的事件处理器,其定义了事件通知相关的逻辑,包含KeeperState和EventType两......
  • JavaScript 面向对象编程
    面向对象编程ObjectOrientedProgramming面向对象编程用对象把数据和方法聚合起来。面向对象编程的优点能写出模块化的代码能使得代码更灵活能提高代码的可重用性面向对象编程的原则继承(inheritance):子类/派生类从父类/基类/超类中派生,形成继承结构封装(encapsulati......
  • java8 数据分组的两种方式?
    第一种:使用partitioningBy收集器例子:Map<Boolean,List<Art>>= artist.stream.collect(partitioningBy(x->x.isSolo()));根据true,false分类,满足条件的返回到true,不满足的返回到false第二种:使用groupingBy分组Map<String,List<Art>>= artist.stream.collect(groupin......
  • chargpt对于gstreamer的tee的理解
    问:gstreamer中的tee有什么用[GPT]在GStreamer中,tee是一个元素,它的作用是将一个输入流分配到多个输出流中,使得同一个输入数据可以同时传输到多个不同的处理过程中。它的作用类似于电视信号中的“分配器”,可以将一个信号分配到多个电视上。在实际应用中,tee通常用于多个处理过程需......
  • 数据库连接池报错java.lang.NoClassDefFoundError
    第一次用c3p0,在连接时,发声如下报错java.lang.NoClassDefFoundError 经查看,发现它需要辅助包 mchange-commons-java.jar,下载放入后,即可 ......
  • 在 IDEA 中创建 Java Web 项目的方式(详细步骤教程)
    开发环境以下是我的开发环境JDK1.8Maven3.6.3Tomcat9.0IDEA2019(2019无所畏惧,即使现在已经2023年了哈哈哈)最原始的JavaWeb项目下面的内容可能会因IDEA版本不同,而有些选项不同,但是大同小异。1.打开IDEA点击CreateNewProject2.点击JavaEnterprise......
  • java基于springboot+vue的房屋租赁租房系统、租房管理系统,附源码+数据库,免费包运行,适
    1、项目介绍java基于springboot+vue的房屋租赁租房系统、租房管理系统,分为管理员和用户。用户的功能有:登录、注册、房屋信息、交流论坛、房屋咨询、在线客服、个人中心、我的收藏、我的发布、预约看房管理、在线签约管理、租赁评价管理、管理员的功能有:登录、个人中心、用户管......