一、创建测试数据

      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> 根据对象中的属性处理数据的更多相关文章

  1. spring data mongodb中,如果对象中的属性不想加入到数据库字段中

    spring data mongodb中,如果对象中的属性不想加入到数据库字段中,可加@Transient注解,声明为透明属性 spring data mongodb 官网帮助文档 http://ww ...

  2. JavaScript 深入了解对象中的属性

    本篇主要介绍JS中对象的属性,包括:属性的分类.访问方式.检测属性.遍历属性以及属性特性等内容. 目录 1. 介绍:描述属性的命名方式.查找路径以及分类 2. 属性的访问方式:介绍'.'访问方式.'[ ...

  3. java工具类之按对象中某属性排序

    import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang ...

  4. 在Map对象中获取属性,注意判断为空

    在Map对象中获取属性,注意判断为空 public static void main(String[] args) { Map map = new HashMap(); Integer i = (In ...

  5. 遍历js对象中的属性

    可以使用js自带的for in.也可以使用Ext JS中的方法来遍历js对象中的属性 代码如下: /** 遍历对象 */ var person = {name:'张泰松',age:28}; //js方 ...

  6. JS基础_枚举对象中的属性

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  7. 枚举对象中的属性 for . . in

    枚举对象中的属性:把对象中所有的属性和值都取出来 使用 for . . . in 语句 语法: for(var  变量  in  对象){ } for  . . . in 语句  对象中有几个属性,循 ...

  8. 微信小程序:给data中对象中的属性设置值与给data中的属性或对象或数组设置值的区别

    一.给data中的属性或对象或数组设置值,属性名不需要加引号 this.setData({ material: param, // 这里material为对象 } this.setData({   d ...

  9. C#验证对象中的属性是否为空的共通方法

    在后台接口处理时,经常需要对请求的参数做验证.因此提取了共通方法,方便进行判断. /// <summary> /// 数据验证工具类 /// </summary> public ...

  10. 使用 history 对象和 location 对象中的属性和方法制作一个简易的网页浏览工具

    查看本章节 查看作业目录 需求说明: 使用 history 对象和 location 对象中的属性和方法制作一个简易的网页浏览工具 实现思路: 使用history对象中的 forward() 方法和 ...

随机推荐

  1. Fast多维数组

    #include<iostream> #include<chrono> struct Timer { std::chrono::time_point<std::chron ...

  2. Seaborn分布数据可视化---箱型分布图

    箱型分布图 boxplot() sns.boxplot( x=None, y=None, hue=None, data=None, order=None, hue_order=None, orient ...

  3. 美团一面:说说synchronized的实现原理?问麻了。。。。

    引言 在现代软件开发领域,多线程并发编程已经成为提高系统性能.提升用户体验的重要手段.然而,多线程环境下的数据同步与资源共享问题也随之而来,处理不当可能导致数据不一致.死锁等各种并发问题.为此,Jav ...

  4. Response下载文件

    Response下载文件的主要步骤有七个: 1.要获取下载文件的路径 String realPath = "F:\\JavaWeb\\WorkSpace\\JavaWeb-Servlet\\ ...

  5. unknow or unsupported command install

    错误原因: 今天使用pip下载labelimg时,出现了"unknow or unsupported command install"的错误,这是由于电脑有多个pip文件路径所导致 ...

  6. MyBatis ognl.NoSuchPropertyException

    描述 SpringBoot + Mybatis-plus 项目,运行时出现如下错误: ognl.NoSuchPropertyException:没有对应属性异常 Invalid bound state ...

  7. openGauss每日一练第三天

    openGauss 每日一练第三天 本文出处:https://www.modb.pro/db/193083 学习目标 学习 openGauss 创建数据库.修改数据库属性和删除数据库 课后作业 1.分 ...

  8. MogDB 安装解压错误:cannot run bzip2: No such file or directory

    MogDB 安装解压错误:cannot run bzip2: No such file or directory 本文出处:https://www.modb.pro/db/403662 问题症状 Mo ...

  9. css block,inline和inline-block概念和区别

    总体概念 block和inline这两个概念是简略的说法,完整确切的说应该是 block-level elements (块级元素) 和 inline elements (内联元素).block元素通 ...

  10. sumo简单安装及运行实例

    下载解压并添加环境变量 记录一下今天SUMO的安装及使用经验,写的可能比较潦草,没看懂的小伙伴在下方评论,我看到一定会解答. 第一步先打开网址下载sumo: https://sourceforge.n ...