一、创建测试数据

      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. Java面试题【1】

    Java面试题总结 2022-05-20 1)Java有没有goto? goto是C语言中的,通常与条件语句配合使用,可用来实现条件转移, 构成循环,跳出循环体等功能.Java保留了这个关键字但是没有 ...

  2. C++设计模式 - 模板方法(Template Method)

    组件协作模式: 现代软件专业分工之后的第一个结果是"框架与应用程序的划分","组件协作"模式通过晚期绑定,来实现框架与应用程序之间的松耦合,是二者之间协作时常用 ...

  3. GitHub/GitLab 为不同的项目修改提交名字 user.name 和邮箱 user.email(附:批量处理脚本)

    背景 大疫情的背景下,家里的电脑需要同时支撑自己和公司的项目,根据 GitHub/GitLab 网站的提交记录上看,其是根据邮箱来辨识用户的,所以有必要分别针对不同的项目设置不同的 Git 名字(us ...

  4. Python 集合(Sets)3

    Python - 合并集合 在 Python 中,有几种方法可以合并两个或多个集合.您可以使用union()方法,该方法返回一个包含两个集合中所有项的新集合,或使用update()方法,将一个集合中的 ...

  5. 【FAQ】HarmonyOS SDK 闭源开放能力 —IAP Kit

    1.问题描述 根据https://developer.huawei.com/consumer/cn/doc/harmonyos-references/iap-data-model-0000001736 ...

  6. Unity-PC 端调用SpVoice语音 (文字转语音)

    第一步引用文件 在VS当中 点击项目->添加引用-> 搜索Microsoft Speech Objecet Library 然后选中前面的白色方块点击确定就行了 插入之后 你的引用库中会多 ...

  7. HarmonyOS SDK,助力开发者打造焕然一新的鸿蒙原生应用

    鸿蒙生态千帆启航仪式于 1 月 18 日正式启动.从 2019 年 HarmonyOS 正式发布到 2020 年"没有人能够熄灭漫天星光",今天,满天星光终汇成璀璨星河,Harmo ...

  8. 官方直播丨“Hello Ability:从页面跳转开始”周三晚不见不散

    12月8日 19:00-20:30,Hello HarmonyOS系列课程的第四期"Hello Ability:从页面跳转开始"线上直播,将带你学习如何快速通过JS page间.A ...

  9. Java进行excel的导入导出操作

    excel表格的导出导入在业务中经常会遇到,下面介绍hutool和easyExcel两种操作excel的工具 测试的实体类 通过mybatis-plus生成的,用于导出数据的实体类 @Getter @ ...

  10. linux中nginx的https证书过期替换

    linux中nginx的https证书过期替换 工作记录,不然老是忘 一般提示这个就说明过期了 首先把新的证书换上去,最好和之前的文件名字一样,这样就不用改配置文件了 路径就自己找了需要,不过一般挺好 ...