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

对应实体类

import lombok.Getter;
import lombok.Setter; @Getter
@Setter
public class Student { private String name; private int age; private String className; private String birthday;
}

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

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

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

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

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

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

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

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

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

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

6.对集合元素去重

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

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

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

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

 // 所有的ip信息对象集合
List<NetiIpInfo> netInfoList = netIpService.queryNetIpList();
// 从所有IP信息对象集合中根据机房id过滤出所有机房id不同的数据对象,并根据机房id去重
List<NetiIpInfo> distinctIpRoomList = netInfoList.stream().collect(Collectors
.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(
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. linux内核态和用户态的信号量

    在Linux的内核态和用户态都有信号量,使用也不同,简单记录一下. 1> 内核信号量,由内核控制路径使用.内核信号量是struct semaphore类型的对象,它在中定义struct sema ...

  2. 2017(4)数据库系统,分布式数据库,NoSQL,反规范化

    试题四(共 25 分) 阅读以下关于数据库分析与建模的叙述,在答题纸上回答问题 1至问题 3. [说明] 某电子商务企业随着业务不断发展,销售订单不断增加,每月订单超过了 50 万笔,急需开发一套新的 ...

  3. 2019春第八周作业Compile Summarize

    这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 在这里 我在这个课程的目标是 能更加进一步的够熟练掌握指针的用法 这个作业在那个具体方面帮助我实现目标 指针对于高阶题目的做法 参考文献与 ...

  4. Extjs6 grid 导出excel功能类,支持renderer

    /* grid 导出excel扩展(纯客户端,提交到后台再导的可以自己改改代码也在) 参考自 https://blog.csdn.net/tianxiaode/article/details/4596 ...

  5. window系统下搭建本地的NuGet Server

    1. NuGet.Config文件所在的目录: C:\Users\xxx\AppData\Roaming\NuGet 2.将nupkg为结尾的文件放在 项目的Packages目录下.(注意是和web. ...

  6. IMU 标定 | 工业界和学术界有什么不同?

    点击"计算机视觉life"关注,置顶更快接收消息! 由于格式问题最好在公众号上观看<IMU 标定-工业界和学术界有什么不同?> 本文主要介绍了IMU基本结构原理和误差的 ...

  7. php爬虫入门

    本篇文章介绍PHP抓取网页内容技术,利用PHP cURL扩展获取网页内容,还可以抓取网页头部,设置cookie,处理302跳转. 一.cURL安装 采用源码安装PHP时,需要在configure时添加 ...

  8. 蓝桥杯近3年决赛题之3(17年b组)

    做的时候对了2个小题,一个大题可能会拿点分数. 1. 标题:36进制 对于16进制,我们使用字母A-F来表示10及以上的数字.如法炮制,一直用到字母Z,就可以表示36进制. 36进制中,A表示10,Z ...

  9. NuGet的简单使用

    什么是NuGet? NuGet(读作New Get)是用于微软.NET开发平台的软件包管理器,是一个Visual Studio的扩展.在使用Visual Studio开发基于.NET Framewor ...

  10. java-redis

    pom.xml添加如下配置: <dependency> <groupId>org.springframework.boot</groupId> <artifa ...