本文为博主原创,未经允许不得转载

对应实体类

  1. import lombok.Getter;
  2. import lombok.Setter;
  3.  
  4. @Getter
  5. @Setter
  6. public class Student {
  7.  
  8. private String name;
  9.  
  10. private int age;
  11.  
  12. private String className;
  13.  
  14. private String birthday;
  15. }

1.根据字段取出某一个字段属性的集合

  1. List<Student> studentList = new ArrayList<>();
  2. List<int> newList = studentList.stream().map(Student::getAge).collect(Collectors.toList());
  3. for (Student student : newList) {
  4. System.out.println(student.getName()+"---"+student.getAge());
  5. }

2。List根据某个字段升序排序

  1. List<Student> studentList = new ArrayList<>();
  2. List<Student> newList = studentList.stream().sorted(Comparator.comparing(Student::getAge)).collect(Collectors.toList());
  3. for (Student student : newList) {
  4. System.out.println(student.getName()+"---"+student.getAge());
  5. }

3.List根据某个字段排序降序

  1. List<Student> list = new ArrayList<>();
  2. list = list.stream().sorted(Comparator.comparing(Student::getAge).reversed()).collect(Collectors.toList());

4.获取某一字段属性值对应的数据集合

  1. List<Student> resultList = studentList.stream()
  2. .filter((Student stu) -> area.equals(stu.getAge()))
  3. .collect(Collectors.toList());

5.根据某个字段值获取出对应的对象

  1. Student stu = studentList.stream()
  2. .filter(p -> "2018-08-12 12:10".equals(p.getBirthday()))
  3. .findAny().orElse(null);

6.对集合元素去重

  1. List<String> nameList = new ArrayList<>();
  2. nameList = nameList.stream().distinct().collect(Collectors.toList());

7.对集合某一个属性进行求和

  1. List<Student> stuList = new ArrayList<>();
  2. double totalAge = stuList.stream().collect(Collectors.summingDouble(Student::getAge));

8。获取集合中的某一个属性的数据集合并去重

  1. // 所有的ip信息对象集合
    List<NetiIpInfo> netInfoList = netIpService.queryNetIpList();
  2. // 从所有IP信息对象集合中根据机房id过滤出所有机房id不同的数据对象,并根据机房id去重
  3. List<NetiIpInfo> distinctIpRoomList = netInfoList.stream().collect(Collectors
  4. .collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(
  5. Comparator.comparing(NetiIpInfo::getIpRoomId))), ArrayList::new));

代码是很简答,很优雅的

解释一下

list.stream(): 是把list集合转化为stream集合

sorted(): 进行排序,其中Comparator.comparing(Student::getAge)表示按照年纪排序,

.reversed()表示是逆序,因为默认情况下,不加.reversed 是升序的

collect(Collectors.toList()): 再次将排序后的stream集合转化为list集合

.findAny()表示将其中任意一个返回;

.orElse(null)表示如果一个都没找到返回null

distinct() 对集合元素或对象去重

summingDouble() 对集合元素进行求和为double类型数据

List集合流处理类型小结的更多相关文章

  1. 集合流之"交集(相同)和差集(区别的)"的使用

    一.需求 今天做的是将两个字符串转为数组后再转集合,然后利用集合的流stream来进行差集过滤 二.差集代码 差集:将两个集合相同的数据去掉,留下不同的数据 1 @Test 2 public void ...

  2. 161028、Nginx负载均衡实现tomcat集群方案简要小结

    重点两部分:一.负载均衡二.tomcat集群 所谓tomcat集群,就是可以向外提供并行服务的多台机器,任何一台服务器宕机,其它服务器可以替代它向外提供服务,而不影响用户访问. Nginx是一个常用的 ...

  3. java基础--java.util.Date类型小结

    首先先来了解一下Date数据类型: . Date类型通常要和另一个 java.text.SimpleDateFormat类联合使用. 把long-->Date: public Date(long ...

  4. .Net枚举类型小结

    1.枚举类型的要点: (1)类型声明语法: enum 枚举名 (2)枚举体语法: a.成员名称 = 整数值,其他成员名称,或者其他成员与整数的表达式  b.成员之间需要用逗号隔开 (3)枚举可以继承的 ...

  5. Hadoop 集群配置记录小结

    Hadoop集群配置往往按照网上教程就可以"配置成功",但是你自己在操作的时候会有很多奇奇怪怪的问题出现, 我在这里整理了一下常见的问题与处理方法: 1.配置/etc/hosts ...

  6. C指针类型小结

    要理解复杂的指针类型其实很简单,一个类型里会出现很多运算符,它们也像普通表达式一样,有优先级. 原则: 从变量名开始,根据运算符优先级结合,一步一步分析. 下面让我们先从简单的类型开始慢慢分析吧: i ...

  7. 关于datetime,date,timestamp,year,time时间类型小结

    关于datetime,date,timestamp,year,time时间类型 datetime占用8个字节 日期范围:”1000-01-01 00:00:00” 到”9999-12-31 23:59 ...

  8. JAVA8新特性--集合流操作Stream

    原文链接:https://blog.csdn.net/bluuusea/article/details/79967039 Stream类全路径为:java.util.stream.Stream 对St ...

  9. C++ string类型小结

    目录 构造函数 string.append() string.assign() string.at() string.back() string.begin() string.capasity() s ...

随机推荐

  1. Elasticsearch学习笔记(十一)Mapping原理

    一.Mapping的功能作用 Mapping是定义如何存储和索引一个document及其所包含字段的过程. Mapping是index和type的元数据,每个type都有自己的一个mapping,决定 ...

  2. jeecg自定义按钮使用exp属性不起作用

    为什么要写这篇文章? 之前写过一篇类似的文章 jeecg笔记之自定义显示按钮exp属性,但是有些小伙伴留言参考后不起作用,当时我的 jeecg 版本为3.7.5,最终以版本不同,暂时搁浅了.今天,重新 ...

  3. 6个项目带你全面掌握Laravel框架

    Laravel框架简介: Laravel是一套简洁.优雅的PHP Web开发框架(PHP Web Framework).它可以让你从面条一样杂乱的代码中解脱出来,帮你构建一个完美的网络APP,而且每行 ...

  4. table添加正确的样式

    以前在做表格的时候,会在表格<table>标签中添加一些属性,来改变表格的样式,经常用到的有这几个 width 表格的宽度border 表格边框的宽度cellpadding  单元边沿与其 ...

  5. MATLAB矩阵运算

    1. 矩阵的加减乘除和(共轭)转置 (1) 矩阵的加法和减法 如果矩阵A和B有相同的维度(行数和列数都相等),则可以定义它们的和A+B以及它们的差A-B,得到一个与A和B同维度的矩阵C,其中Cij=A ...

  6. 关于Oracle的44951事件

    最近有同事遇到某客户数据库产生大量阻塞,等待事件为:enq HW - contention,最开始采用不断杀会话的方式,效果不好,问题一直高频反复.进一步确认SQL是大量的insert,且插入的表中含 ...

  7. 感觉不错的随笔 关于C、C++的

    [effective C++的网页版] http://www.kuqin.com/effectivec2e/ 内存四区模型 https://www.cnblogs.com/crazyzhang/p/5 ...

  8. 计算机网络网络层的IP地址划分及子码

    现在在网络层,即就是TCP/IP协议里的网际互联层,最流行IP协议的就是IPV4.其中IP地址的格式是由32位二进制数字表示的,通常为了人们阅读习惯,将其转换成点分十进制来表示,如:192.168.1 ...

  9. nginx+fastCGI

    首先贴些遇到的问题,之后再整理 1.yum -y install pcre zlib OpenSSL openssl-devel  pcre-devel 2. nginx: [emerg] " ...

  10. Python中的7种可调用对象

    Python中有七种可调用对象,可调用对象可使用内置函数callable来检测 一.用户自定义的函数: 使用def语句或者lambda表达式创建的函数. 二.内置函数: 使用C语言实现的函数,如len ...