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 ...
随机推荐
- Oracle SQL 部分特殊字符转义及escape的用法
在处理sql时,遇到insert 或update 的参数中含有特殊字符“&”,下划线“_”, 单引号" ' "等时,要做转义处理. 例:插入特殊字元'&' upda ...
- ubuntu安装zabbix 3.2(转)
转自:http://www.zabbix.org.cn/viewtopic.php?f=13&t=1096本人略做了写修改. 准备工作 apt-get update apt-get upgra ...
- AMBER: CPPTRAJ Tutorial C0
CPPTRAJ作为PTRAJ的继任者,拥有比PTRAJ更强大的功能,本教程会简要的介绍CPPTRAJ的用法及注意事项. 需要的文件: trpzip2.gb.nc trpzip2.ff10.mbondi ...
- CentOS配置apache多站点设置
配置文件目录: /etc/httpd/conf.d /etc/httpd/conf/httpd.conf 错误日志文件在哪里? 网站文件目录: /var/www/html (Ubuntu/Centos ...
- Oracle中对XMLType的简单操作(extract、extractvalue...)
Oracle中对XMLType的简单操作(extract.extractvalue...) 1.下面先创建一个名未test.xml的配置文件. <?xml version="1. ...
- 阿里云轻量级服务器上JDK及tomcat部署配置
先下载JDK和tomcat到本地 地址为http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html ht ...
- java生成条形码工具类
package com.runtime.extend.utils.CodeCreate;import java.awt.Color;import java.awt.Font;import java.a ...
- Selenium Edge Driver Python 自动化测试
Finally I got it. 没有自动化过edge,今天被小坑了一下,但是还好现在弄好了. 1. 查看edge 版本,我的是14.14393 2. https://developer.micro ...
- RNA-seq workflow
SRAtoolkit download .fa http://www.genomicdataanalysis.com/genomicdatatype/rna-seq/
- oracle 11g 安装步骤
指定安装路径 输入数据库名(cwbpm),(按照自己要求输入,可以直接用默认库名) 输入密码(自定义):123456 (自定义密码) 下一步 选择“是” 点击完成,开始安装数据库 安装完成后会弹出页面 ...