List集合流处理类型小结
本文为博主原创,未经允许不得转载
对应实体类
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集合流处理类型小结的更多相关文章
- 集合流之"交集(相同)和差集(区别的)"的使用
一.需求 今天做的是将两个字符串转为数组后再转集合,然后利用集合的流stream来进行差集过滤 二.差集代码 差集:将两个集合相同的数据去掉,留下不同的数据 1 @Test 2 public void ...
- 161028、Nginx负载均衡实现tomcat集群方案简要小结
重点两部分:一.负载均衡二.tomcat集群 所谓tomcat集群,就是可以向外提供并行服务的多台机器,任何一台服务器宕机,其它服务器可以替代它向外提供服务,而不影响用户访问. Nginx是一个常用的 ...
- java基础--java.util.Date类型小结
首先先来了解一下Date数据类型: . Date类型通常要和另一个 java.text.SimpleDateFormat类联合使用. 把long-->Date: public Date(long ...
- .Net枚举类型小结
1.枚举类型的要点: (1)类型声明语法: enum 枚举名 (2)枚举体语法: a.成员名称 = 整数值,其他成员名称,或者其他成员与整数的表达式 b.成员之间需要用逗号隔开 (3)枚举可以继承的 ...
- Hadoop 集群配置记录小结
Hadoop集群配置往往按照网上教程就可以"配置成功",但是你自己在操作的时候会有很多奇奇怪怪的问题出现, 我在这里整理了一下常见的问题与处理方法: 1.配置/etc/hosts ...
- C指针类型小结
要理解复杂的指针类型其实很简单,一个类型里会出现很多运算符,它们也像普通表达式一样,有优先级. 原则: 从变量名开始,根据运算符优先级结合,一步一步分析. 下面让我们先从简单的类型开始慢慢分析吧: i ...
- 关于datetime,date,timestamp,year,time时间类型小结
关于datetime,date,timestamp,year,time时间类型 datetime占用8个字节 日期范围:”1000-01-01 00:00:00” 到”9999-12-31 23:59 ...
- JAVA8新特性--集合流操作Stream
原文链接:https://blog.csdn.net/bluuusea/article/details/79967039 Stream类全路径为:java.util.stream.Stream 对St ...
- C++ string类型小结
目录 构造函数 string.append() string.assign() string.at() string.back() string.begin() string.capasity() s ...
随机推荐
- OFFICE 您正试图运行的函数包含有宏或需要宏语言支持的内容。
故障现象:打开WORD的时候,提示“您正试图运行的函数包含有宏或需要宏语言支持的内容.而在安装此软件时,您(或您的管理员)选择了不安装宏或控件的支持功能”. 提示现象: 解决办法 : 1.进入“控制面 ...
- mysql 获取昨天数据 utc时间
# yzj邀请昨日数据 SELECT s.id, s.create_at, ch.id, ch.code AS channel, c.id , c.code AS custom, so.id, so. ...
- jackson 流式API
http://www.cnblogs.com/lee0oo0/articles/2652528.html Jackson提供了三种可选的JSON处理方法 1.流式API com.fasterx ...
- tensorflow training result
- PS跑马灯效果和更换图标
最终效果 1.图片修改 跑马灯效果图 Head页面 使用的 IScript_HPDefaultHdr() in WEBLIB_PORTAL.PORTAL_HOMEPAGE 这个页面 一 ...
- 迷宫问题 (bfs广度优先搜索记录路径)
问题描述: 定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, ...
- SQL注入检测方法
private bool CheckParams(params object[] args){ string[] Lawlesses={"=","'"}; if ...
- IO流(一)
一.异常 概述 异常就是Java程序在运行过程中出现的错误. 由来 问题也是现实生活中一个具体事务,也可以通过java的类的形式进行描述,并封装成对象.其实就是Java对不正常情况进行描述后的对象体现 ...
- ARMLCD屏调试2--ili9325驱动编写
2011-06-24 21:57:09 一,读id--完成 二,自己写了驱动--完成 三,调试LCD屏驱动--完成 一 读id,不过过程还有点曲折. 因为之前写命令写数据的时序是根据i ...
- 配置React Native 安卓开发环境
配置主要分为以下几步: 安装node.js 安装AndroidStudio 安装React Native命令行工具 搭建React Native版本的Hello World,修改代码查看效果 第一步 ...