List<T> 根据对象中的属性处理数据
一、创建测试数据
UserEntity user1 = UserEntity.builder().id(1).name("张三").sex(0).build();
UserEntity user2 = UserEntity.builder().id(2).name("李四").sex(0).build();
UserEntity user3 = UserEntity.builder().id(3).name("张三").sex(0).build();
UserEntity user4 = UserEntity.builder().id(4).name("李四").sex(0).build();
UserEntity user5 = UserEntity.builder().id(5).name("王五").sex(1).build();
List<UserEntity> UserList = new ArrayList<>();
UserList.add(user1);
UserList.add(user2);
UserList.add(user3);
UserList.add(user4);
UserList.add(user5);
System.out.println("(1)创建测试数据:"+UserList);
二、将测试数据 姓名、性别一致的数据进行过滤
List<UserEntity> UserList2 = UserList.stream().collect(
Collectors.collectingAndThen(
Collectors.toCollection(
() -> new TreeSet<>(Comparator.comparing(p -> p.getName()+ p.getSex()))),ArrayList::new));
System.out.println("(2)将姓名、性别一致的进行过滤:"+UserList2);
三、将测试数据按照ID倒叙进行排序
List<UserEntity> collect = UserList.stream().sorted(Comparator.comparing(UserEntity::getId).reversed()).collect(Collectors.toList());
System.out.println("(3)将数据按照id倒叙进行排序:"+collect);
四、将测试数据与第二步处理后的数据(UserList2)进行姓名、年龄一致的过滤出来,并且将姓名赋值成 "张三丰"
List<UserEntity> result = UserList.stream()
.flatMap(x -> UserList2.stream()
.filter(y -> x.getName().equals(y.getName()) && x.getSex().equals(y.getSex())))
.peek(y -> {
y.setName("张三丰");
}).collect(Collectors.toList());
System.out.println("(4)将姓名.性别一致的在主数据中过滤出来,并且将名称赋值成\"张三丰\":"+result);
五、将测试数据按照Id进行分组
Map<Integer, List<UserEntity>> collect1 = UserList.stream().collect(Collectors.groupingBy(UserEntity::getSex));
System.out.println("(5-1)获取性别是【0】的数据信息"+collect1.get(0));
System.out.println("(5-2)获取性别是【1】的数据信息"+collect1.get(1));
for (Map.Entry<Integer, List<UserEntity>> entry : collect1.entrySet()) {
System.out.println("(5-3)将测试数据按照性别进行分组-遍历方法一:-key = " + entry.getKey() + ", value = " + entry.getValue());
}
collect1.forEach((k, v) -> System.out.println("(5-4)将测试数据按照性别进行分组-遍历方法二:-key = " + k + ", value = " + v));
六、控制台输出如下:
(1)创建测试数据:[UserEntity(id=1, name=张三, sex=0), UserEntity(id=2, name=李四, sex=0), UserEntity(id=3, name=张三, sex=0), UserEntity(id=4, name=李四, sex=0), UserEntity(id=5, name=王五, sex=1)]
(2)将姓名、性别一致的进行过滤:[UserEntity(id=1, name=张三, sex=0), UserEntity(id=2, name=李四, sex=0), UserEntity(id=5, name=王五, sex=1)]
(3)将数据按照id倒叙进行排序:[UserEntity(id=5, name=王五, sex=1), UserEntity(id=4, name=李四, sex=0), UserEntity(id=3, name=张三, sex=0), UserEntity(id=2, name=李四, sex=0), UserEntity(id=1, name=张三, sex=0)]
(4)将姓名.性别一致的在主数据中过滤出来,并且将名称赋值成"张三丰":[UserEntity(id=1, name=张三丰, sex=0), UserEntity(id=2, name=张三丰, sex=0), UserEntity(id=5, name=张三丰, sex=1)]
(5-1)获取性别是【0】的数据信息[UserEntity(id=1, name=张三丰, sex=0), UserEntity(id=2, name=张三丰, sex=0), UserEntity(id=3, name=张三, sex=0), UserEntity(id=4, name=李四, sex=0)]
(5-2)获取性别是【1】的数据信息[UserEntity(id=5, name=张三丰, sex=1)]
(5-3)将测试数据按照性别进行分组-遍历方法一:-key = 0, value = [UserEntity(id=1, name=张三丰, sex=0), UserEntity(id=2, name=张三丰, sex=0), UserEntity(id=3, name=张三, sex=0), UserEntity(id=4, name=李四, sex=0)]
(5-3)将测试数据按照性别进行分组-遍历方法一:-key = 1, value = [UserEntity(id=5, name=张三丰, sex=1)]
(5-4)将测试数据按照性别进行分组-遍历方法二:-key = 0, value = [UserEntity(id=1, name=张三丰, sex=0), UserEntity(id=2, name=张三丰, sex=0), UserEntity(id=3, name=张三, sex=0), UserEntity(id=4, name=李四, sex=0)]
(5-4)将测试数据按照性别进行分组-遍历方法二:-key = 1, value = [UserEntity(id=5, name=张三丰, sex=1)]
List<T> 根据对象中的属性处理数据的更多相关文章
- spring data mongodb中,如果对象中的属性不想加入到数据库字段中
spring data mongodb中,如果对象中的属性不想加入到数据库字段中,可加@Transient注解,声明为透明属性 spring data mongodb 官网帮助文档 http://ww ...
- JavaScript 深入了解对象中的属性
本篇主要介绍JS中对象的属性,包括:属性的分类.访问方式.检测属性.遍历属性以及属性特性等内容. 目录 1. 介绍:描述属性的命名方式.查找路径以及分类 2. 属性的访问方式:介绍'.'访问方式.'[ ...
- java工具类之按对象中某属性排序
import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang ...
- 在Map对象中获取属性,注意判断为空
在Map对象中获取属性,注意判断为空 public static void main(String[] args) { Map map = new HashMap(); Integer i = (In ...
- 遍历js对象中的属性
可以使用js自带的for in.也可以使用Ext JS中的方法来遍历js对象中的属性 代码如下: /** 遍历对象 */ var person = {name:'张泰松',age:28}; //js方 ...
- JS基础_枚举对象中的属性
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 枚举对象中的属性 for . . in
枚举对象中的属性:把对象中所有的属性和值都取出来 使用 for . . . in 语句 语法: for(var 变量 in 对象){ } for . . . in 语句 对象中有几个属性,循 ...
- 微信小程序:给data中对象中的属性设置值与给data中的属性或对象或数组设置值的区别
一.给data中的属性或对象或数组设置值,属性名不需要加引号 this.setData({ material: param, // 这里material为对象 } this.setData({ d ...
- C#验证对象中的属性是否为空的共通方法
在后台接口处理时,经常需要对请求的参数做验证.因此提取了共通方法,方便进行判断. /// <summary> /// 数据验证工具类 /// </summary> public ...
- 使用 history 对象和 location 对象中的属性和方法制作一个简易的网页浏览工具
查看本章节 查看作业目录 需求说明: 使用 history 对象和 location 对象中的属性和方法制作一个简易的网页浏览工具 实现思路: 使用history对象中的 forward() 方法和 ...
随机推荐
- 现代DevOps如何改变软件开发格局
在软件开发的早期,该过程通常是开发人员编写代码,再将其交给质量保证(QA)进行测试.这种瀑布开发方法可能会导致质量问题和延迟,因为问题是在周期后期发现的. 一.了解DevOps和测试左移 DevOps ...
- #Tarjan,贪心#LOJ 3684 「COCI 2022.3」Usmjeravanje
题目传送门 分析 可以发现题目实际上求的是最小强连通分量个数. 并且每个强连通分量必然是由最多两段区间 \(a_l\sim a_r,b_L\sim b_R\) 组成的 只要存在一条路 \(b_R-&g ...
- #莫比乌斯反演,欧拉函数#洛谷 5518 [MtOI2019]幽灵乐团
题目传送门 分析 前置知识:\(\sum_{d|n}\mu(d)=[n==1]\),\(\sum_{d|n}\mu(d)\frac{n}{d}=\varphi(n)\) 把最小公倍数拆开可以得到 \[ ...
- #割点,Tarjan#洛谷 5058 [ZJOI2004]嗅探器
题目 询问能编号最小的割点删掉后使\(a\)和\(b\)无法连通 分析 考虑将\(a\)当作根,那么割点的dfn小于等于\(b\)的dfn就可以了, 怎么会呢,如果有一个环呢,所以得要让割点的子节点小 ...
- Python队列----queue
import queue # 官网文档:https://docs.python.org/3/library/queue.html a1 = queue.Queue() # 先进先出队列 a2 = qu ...
- 重新整理 .net core 实践篇—————grpc工具[三十四]
前言 简单整理一下grpc工具. 正文 工具核心包: Grpc.Tools 这个是项目要引用的包,用来生成cs代码的. dotnet-grpc 这个就是cli,命令行工具 dotnet-grpc 核心 ...
- 基于Material Design风格开源、易用、强大的WPF UI控件库
前言 今天大姚给大家分享一款基于Material Design风格开源.免费(MIT License).易于使用.强大的WPF UI控件库:MaterialDesignInXamlToolkit. 项 ...
- Cache Aside Pattern缓存+数据库读写模式的分析
1.Cache Aside Pattern(1)读的时候,先读缓存,缓存没有的话,那么就读数据库,然后取出数据后放入缓存,同时返回响应 (2)更新的时候,先删除缓存,然后再更新数据库 2.为什么是删除 ...
- 力扣141(Java)-环形链表(简单)
题目: 给你一个链表的头节点 head ,判断链表中是否有环. 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环. 为了表示给定链表中的环,评测系统内部使用整数 pos ...
- PolarDB-X源码解读系列:DML之Insert流程
简介: Insert类的SQL语句的流程可初略分为:解析.校验.优化器.执行器.物理执行(GalaxyEngine执行).本文将以一条简单的Insert语句通过调试的方式进行解读. 在阅读本文之前,强 ...