Stream流对list<map>的操作

ops/2024/9/25 0:55:51/
Map<String,Object> map = new HashMap<>();map.put("name","张三");map.put("age","30");map.put("sex","男");map.put("addr","深圳");List<Map<String,Object>> list = new ArrayList<>();list.add(map);map = new HashMap<>();map.put("name","李四");map.put("age","31");map.put("sex","男");map.put("addr","北京");list.add(map);map = new HashMap<>();map.put("name","王五");map.put("age","35");map.put("sex","男");map.put("addr","深圳");list.add(map);// 根据addr住址分组Map<String, List<Map<String, Object>>> addr = list.stream().collect(Collectors.groupingBy(m -> MapUtils.getString(m, "addr")));System.out.println("分组"+addr);// 遍历分组后的数据addr.forEach((k,v)->{System.out.println("map中的key:"+k);v.forEach((kk)->{System.out.println("listMap中的数据"+kk);});});// 过滤,保留匹配的数据List<Map<String, Object>> mapStream = list.stream().filter(m -> MapUtils.getString(m, "addr").equals("深圳")).collect(Collectors.toList());System.out.println("过滤:"+mapStream);// 过滤,第一条匹配的数据Optional<Map<String, Object>> first = list.stream().filter(m -> MapUtils.getString(m, "addr").equals("深圳")).findFirst();System.out.println("过滤:"+first);// 去重List<String> collect = list.stream().map(m -> MapUtils.getString(m, "addr")).distinct().collect(Collectors.toList());System.out.println("去重"+collect);// 升序List<Map<String, Object>> sort1 = list.stream().sorted(Comparator.comparing(m -> MapUtils.getString(m, "age"))).collect(Collectors.toList());System.out.println("升序"+sort1);// 降序List<Map<String, Object>> sort2 = list.stream().sorted(Comparator.comparing(m -> MapUtils.getString((Map) m, "age")).reversed()).collect(Collectors.toList());System.out.println("降序:"+sort2);//创建城市List<String> cityList = new ArrayList<String>();cityList.add("北京;上海;深圳;");cityList.add("广州;武汉;杭州;");// 将数据按照逗号分割组成完整的字符串String collect1 = cityList.stream().map(c -> c.split(";")).flatMap(Arrays::stream).collect(Collectors.joining(","));System.out.println("将数据按照逗号分割组成完整的字符串"+collect1);

 输出结果:

分组{北京=[{sex=男, name=李四, addr=北京, sage=31}], 深圳=[{sex=男, name=张三, addr=深圳, age=30}, {sex=男, name=王五, addr=深圳, age=35}]}
map中的key:北京
listMap中的数据{sex=男, name=李四, addr=北京, age=31}
map中的key:深圳
listMap中的数据{sex=男, name=张三, addr=深圳, age=30}
listMap中的数据{sex=男, name=王五, addr=深圳, age=35}
过滤:[{sex=男, name=张三, addr=深圳, age=30}, {sex=男, name=王五, addr=深圳, age=35}]
过滤:Optional[{sex=男, name=张三, addr=深圳, age=30}]
去重[深圳, 北京]
升序[{sex=男, name=张三, addr=深圳, age=30}, {sex=男, name=李四, addr=北京, age=31}, {sex=男, name=王五, addr=深圳, age=35}]
降序:[{sex=男, name=王五, addr=深圳, age=35}, {sex=男, name=李四, addr=北京, age=31}, {sex=男, name=张三, addr=深圳, age=30}]
将数据按照逗号分割组成完整的字符串北京,上海,深圳,广州,武汉,杭州


http://www.ppmy.cn/ops/15468.html

相关文章

jmeter5.4.1源码编译(IDEA)问题解决

问题现象&#xff1a;最近想更深入的研究下jmeter5.4.1的原理及功能具体实现&#xff0c;从官网down了个源码&#xff0c;在本地使用IDEA工具导入项目、编译时&#xff0c;报以下错误&#xff1a; class jdk.internal.loader.ClassLoaders$PlatformClassLoader cannot be cast…

Process in Semiconductor(半导体工艺)

Front-End Process in Semiconductor 引言正文Front-endBack-endFront-end of lineProcess flowBack-end of lineSiN seal layerCVDLPCVDPECVDSOI PSVSOI ACTSOI PSV+引言

redis中的缓存穿透问题

缓存穿透 缓存穿透问题&#xff1a; 一般请求来到后端&#xff0c;都是先从缓存中查找数据&#xff0c;如果缓存中找不到&#xff0c;才会去数据库中查询数据。 而缓存穿透就是基于这一点&#xff0c;不断发送请求查询不存在的数据&#xff0c;从而使数据库压力过大&#xff…

Linux打开html

在 Linux 系统中&#xff0c;您可以使用默认的 Web 浏览器打开 HTML 文件。一般来说&#xff0c;您可以采用以下两种方式打开 HTML 文件&#xff1a; 使用终端命令行打开 HTML 文件 打开终端并进入到 HTML 文件所在目录&#xff0c;然后输入以下命令&#xff1a; xdg-open f…

在线Latex公式编辑网站

在线LaTeX公式编辑器-编辑器 (latexlive.com) LaTeX&#xff08;常被读作/ˈlɑːtɛk/或/ˈleɪtɛk/&#xff0c;正确读音:/ˈlɑːtɛx/音译&#xff1a;拉泰赫&#xff0c;写作 $\LaTeX$&#xff09;&#xff0c;是一种基于TeX的排版系统&#xff0c;由美国计算机科学家莱斯…

数字时代的社交王者:探索Facebook的社交帝国

引言&#xff1a;社交媒体的霸主 在数字化浪潮席卷全球的当下&#xff0c;社交媒体已然成为人们日常生活中不可或缺的一部分&#xff0c;而Facebook则是这个领域的不二之选。作为全球最大的社交网络&#xff0c;Facebook不仅拥有庞大的用户群体&#xff0c;更在技术创新、社会…

Python基础:【习题系列】面向对象

在Python中,用于定义类的关键字是什么?( B ) A.classs B.class C.Class D.type 答案:B 难易程度:易 答案解析:在Python中,定义类需要使用关键字class。 知识点:类定义;Python关键字 在Python中,以下哪个关键字用于在类中引用同一类的其他方法或属性?( C ) A.…

鸿蒙应用开发-初见:ArkTS

作者&#xff1a;HarderCoder ArkTS ArkTS围绕应用开发在 TypeScript &#xff08;简称TS&#xff09;生态基础上做了进一步扩展&#xff0c;继承了TS的所有特性&#xff0c;是TS的超集 ArkTS在TS的基础上扩展了struct和很多的装饰器以达到描述UI和状态管理的目的 基本语法 …