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 ...
随机推荐
- Linux-centos7下python3 环境设置
首先安装依赖包 yum -y groupinstall "Development tools" yum -y install zlib-devel bzip2-devel open ...
- CF1142C U2
题目链接:洛谷 codeforces $y>x^2+bx+c$也就是$y-x^2>bx+c$ 左边是点,右边是直线. 维护上凸包. 虽然这么简单但就是做不出来. #include<c ...
- Vue中import引入模块路径时的@符号
1.ES6 模块主要有两个功能:export 和 import export:用户对外输出本模块(一个文件可以理解为一个模块,比如 aaa.js bbb.js)变量的接口 . import:用于在一个 ...
- Hint: Fallback method 'public java.lang.String queryUserByIdFallback(java.lang.Long)' must return: User or its subclass
1.错误日志 熔断器添加错误方法返回时,报了一个 error. com.netflix.hystrix.contrib.javanica.exception.FallbackDefinitionExc ...
- string函数详解(配案例)
多说无益上码~ #include<iostream> #include<algorithm> #include<cmath> #include<cstring ...
- 68.jq---tab选项实现网页定点切换
{volist name="list" id="vo"}<div class="nav_div" style="positi ...
- 单片机C语言基础编程源码六则
1.某单片机系统的P2口接一数模转换器DAC0832输出模拟量,现在要求从DAC0832输出连续的三角波,实现的方法是从P2口连续输出按照三角波变化的数值,从0开始逐渐增大,到某一最大值后逐渐减小,直 ...
- WebForm文件上传
用 FileUpload控件进行上传文件. <asp:FileUpload ID="FileUpload1" runat="server" /> ...
- Oarcle之序列
序列:是一种数据库对象,用来自动产生一组唯一的序号: 序列:是一种共享式的对象,多个用户可以共同使用序列中的序号. 创建序列 create sequence seq_emp_temp incremen ...
- TeamCity 创建docker构建步骤
1 dockerfile source 选择dockerfile文件的路径,一共有三种方式: 1.1.1 file content 这种方式是在线写dockerfile文件. 其在进行创建的时候会在 ...