java8 Stream应用合集

  1. 多个数据集合如何合并为一个数组
			List<Map<String,Object>> data1 = this.queryReportInvestSu(param);List<Map<String,Object>> data2 = this.queryReportInvestSu(param);List<Map<String,Object>> data3 = this.queryReportInvestSu(param);List<Map<String,Object>> data4 = this.queryReportInvestSu(param);// 将所有表格的数据合并成1个数组,便于操作List<Map<String,Object>> dataAll = Stream.of(data1, data2, data3, data4).flatMap(Collection::stream).collect(Collectors.toList());
  1. 二维数据如何拍平为一维数组, (如果你不需要去重,可以将distinct去掉)
 List<String> investorIds = investorIdArrays.stream().flatMap(Arrays::stream).distinct().collect(Collectors.toList());
  1. 获取数组中每条数据中某一个属性的值
List<Map<String,Object>> data = this.queryReportInvestSu(param);
List<String> reviewerIdArrays =  data.stream().map((item)-> item.get("REVIEWER_ID").toString()).collect(Collectors.toList());
  1. java8 针对map中的key排序
// 注意:这里不能用HashMap存,HashMap的遍历顺序是随机的public static TreeMap<String,Object> sortKeyMap(Map<String,Object> map){// Collectors.toMap()默认是HashMapTreeMap<String, Object> result = map.entrySet().stream().sorted(Comparator.comparing(Map.Entry::getKey)).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (k1, k2) -> k1, TreeMap::new));System.out.println("result: " + result);return result}
  1. java8 针对map中的值排序
   // 注意:这里不能用HashMap存,HashMap的遍历顺序是随机的public static TreeMap<String,Object> sortValueMap(Map<String,Object> map){// Collectors.toMap()默认是HashMapTreeMap<String, String> result = map.entrySet().stream().sorted(Comparator.comparing(Map.Entry::getValue)).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (v1, v2) -> v1, TreeMap::new));System.out.println("result: " + result);return result}
  1. java8 按数值进行排序
List<Map<String,Object>> list2 = list.stream().sorted((e1,e2)->{if(!e1.containsKey("SUM")) {e1.put("SUM", 0.00);}if(!e2.containsKey("SUM")) {e2.put("SUM", 0.00);}return Double.compare((Double)e1.get("SUM"),(Double) e2.get("SUM")); //倒序在Double.compare前加一个负号‘-’}).collect(Collectors.toList());System.out.println("map 按数值排序:"+list2);//		对实例类进行排序List<Employee> emps = Arrays.asList(new Employee("啊三",18,999.99,Status.BUSY),new Employee("张四",36,9992341.99,Status.FREE),new Employee("六五",28213,9199.99,Status.FREE),new Employee("欧弟",183121,99.2,Status.VOCATION),new Employee("秋七",823,10.3,Status.FREE),new Employee("绿七",82,10.1,Status.VOCATION),new Employee("张七",82,10.2,Status.BUSY));System.out.println("实体类 排序前的值 : "+emps);List<Employee> emps2 = emps.stream().sorted((e1,e2)-> Double.compare((Double)e1.getSalary(),(Double) e2.getSalary())).collect(Collectors.toList());System.out.println("实体类按数值排序" + emps2);
  1. java8 按照中文排序
		//按中文排序List<Map<String,Object>> list4 = list.stream().sorted((e1,e2)->{Collator collator = Collator.getInstance(Locale.CHINA);return collator.compare(e1.get("NAME"), e2.get("NAME"));	}).collect(Collectors.toList());System.out.println("map 按中文排序" + list4);  // 中文排序倒序(只需要将compare的参数换一下即可,实体类中文倒序也是一样的)List<Map<String,Object>> list5 = list.stream().sorted((e1,e2)->{Collator collator = Collator.getInstance(Locale.CHINA);return collator.compare(e2.get("NAME"),e1.get("NAME"));	}).collect(Collectors.toList());System.out.println("map 按中文倒序" + list5); //实体类 按中文排序List<Employee> emps3 = emps.stream().sorted((e1,e2)->{Collator collator = Collator.getInstance(Locale.CHINA);return collator.compare(e1.getName(), e2.getName());	}).collect(Collectors.toList());System.out.println("实体类按中文排序" + emps3);
  1. java8 根据集合中的某个属性进行分组
package java8分组之后的数据和之前的顺序保持一致;import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;public class Dome {public static void main(String[] args) {List<Map<String,Object>> list = new ArrayList<>();Map<String,Object> map1 = new HashMap<>();map1.put("key1", "aa");map1.put("key2", "bb");map1.put("key3", "cc");map1.put("key4", "dd");Map<String,Object> map2 = new HashMap<>();map2.put("key1", "aa");map2.put("key2", "bb");map2.put("key3", "cc");map2.put("key4", "dd");Map<String,Object> map3 = new HashMap<>();map3.put("key1", "aa");map3.put("key2", "bb1");map3.put("key3", "cc");map3.put("key4", "dd");Map<String,Object> map4 = new HashMap<>();map4.put("key1", "aa");map4.put("key2", "bb1");map4.put("key3", "cc");map4.put("key4", "dd");Map<String,Object> map5 = new HashMap<>();map5.put("key1", "aa");map5.put("key2", "bb3");map5.put("key3", "cc");map5.put("key4", "dd");list.add(map1);list.add(map2);list.add(map3);list.add(map4);list.add(map5);System.out.println(list);/*** 源数据* [{key1=aa, key2=bb, key3=cc, key4=dd},*  {key1=aa, key2=bb, key3=cc, key4=dd},*   {key1=aa, key2=bb1, key3=cc, key4=dd},*    {key1=aa, key2=bb1, key3=cc, key4=dd}, *    {key1=aa, key2=bb3, key3=cc, key4=dd}]*///无序分组,Collectors.groupingBy(e -> e.get("key2")Map<Object,List<Map<String,Object>>> group = list.stream().collect(Collectors.groupingBy(e -> e.get("key2")));System.out.println(group);/** {bb1=[{key1=aa, key2=bb1, key3=cc, key4=dd}, {key1=aa, key2=bb1, key3=cc, key4=dd}], *  bb=[{key1=aa, key2=bb, key3=cc, key4=dd}, {key1=aa, key2=bb, key3=cc, key4=dd}],*  bb3=[{key1=aa, key2=bb3, key3=cc, key4=dd}]}*/// 有序分组 只需要在加两个参数Collectors.groupingBy(e -> e.get("key2"),LinkedHashMap::new,Collectors.toList())Map<Object,List<Map<String,Object>>> group2 = list.stream().collect(Collectors.groupingBy(e -> e.get("key2"),LinkedHashMap::new,Collectors.toList()));System.out.println(group2);/*** {bb=[{key1=aa, key2=bb, key3=cc, key4=dd}, {key1=aa, key2=bb, key3=cc, key4=dd}], *  bb1=[{key1=aa, key2=bb1, key3=cc, key4=dd}, {key1=aa, key2=bb1, key3=cc, key4=dd}], *  bb3=[{key1=aa, key2=bb3, key3=cc, key4=dd}]}*/}
}
  1. java8 对集合中某个属性计算出合计值
IntSummaryStatistics sumcc =  slist.stream().collect(Collectors.summarizingInt(e->Integer.valueOf(e.get("规模").toString())));
nmap.put("部门", sumcc.getSum());//求和
  1. java8 数组按照条件过滤
    List<Map<String, Object>> finalData1  = data.stream().filter((item)-> finalData1.get(finalI).get(Constant.RULE_TYPE).equals(item.get(Constant.RULE_TYPE)) && !Constant.SYMBOL.equals(item.get(Constant.SEC_TYPE1))).collect(Collectors.toList())

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/71079.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浅述C++模板——函数模板及类模板

前言 模板作为 C 的一大特色&#xff0c;对于泛型编程有着重要的作用。同时&#xff0c;对于大规模类似的函数或是类型不确定的类&#xff0c;模板都起了至关重要的作用。 一、模板 在开始学习模板之前&#xff0c;我们首先需要了解模板。先看下面一个例子&#xff1a; #in…

微信小程序开发前准备

文章目录 一.注册微信小程序开发账号&#xff08;一&#xff09;访问微信公众平台官网&#xff08;二&#xff09;进入注册页面&#xff0c;完成注册信息&#xff08;三&#xff09;设置微信小程序信息 二.获取微信小程序的AppID(一) 什么是小程序AppID&#xff08;二&#xff…

从零开始,无需公网IP,搭建本地电脑上的个人博客网站并发布到公网

文章目录 前言1. 安装套件软件2. 创建网页运行环境 指定网页输出的端口号3. 让WordPress在所需环境中安装并运行 生成网页4. “装修”个人网站5. 将位于本地电脑上的网页发布到公共互联网上 前言 在现代社会&#xff0c;网络已经成为我们生活离不开的必需品&#xff0c;而纷繁…

C#写一个UDP程序判断延迟并运行在Centos上

服务端 using System.Net.Sockets; using System.Net;int serverPort 50001; Socket server; EndPoint client new IPEndPoint(IPAddress.Any, 0);//用来保存发送方的ip和端口号CreateSocket();void CreateSocket() {server new Socket(AddressFamily.InterNetwork, SocketT…

Android 使用OpenCV实现实时人脸识别,并绘制到SurfaceView上

1. 前言 上篇文章 我们已经通过一个简单的例子&#xff0c;在Android Studio中接入了OpenCV。 之前我们也 在Visual Studio上&#xff0c;使用OpenCV实现人脸识别 中实现了人脸识别的效果。 接着&#xff0c;我们就可以将OpenCV的人脸识别效果移植到Android中了。 1.1 环境说…

【Java Web】统一处理异常

一个异常处理的ControllerAdvice类。它用于处理Controller注解的控制器中发生的异常。 具体代码功能如下&#xff1a; 导入相关类和方法。声明一个Logger对象&#xff0c;用于日志记录。使用ExceptionHandler注解标记handleException方法&#xff0c;用于处理所有异常。 -嘛在…

快速安装k8s

RKE安装方式 官方文章资源地址 https://rke.docs.rancher.com/installation rke工具下载地址&#xff08;arm,amd,windows都有&#xff09; https://github.com/rancher/rke/releases x86的用amd64下载rke工具 https://github.com/rancher/rke/releases/download/v1.4.8/rke_li…

【文末送书】全栈开发流程——后端连接数据源(二)

前言 「作者主页」&#xff1a;雪碧有白泡泡 「个人网站」&#xff1a;雪碧的个人网站 「推荐专栏」&#xff1a; ★java一站式服务 ★ ★ React从入门到精通★ ★前端炫酷代码分享 ★ ★ 从0到英雄&#xff0c;vue成神之路★ ★ uniapp-从构建到提升★ ★ 从0到英雄&#xff…

2023年海外推广怎么做?

答案是&#xff1a;2023海外推广可以选择谷歌SEO谷歌Ads双向运营。 理解当地文化 成功的海外推广首先是建立在对当地文化的深入了解和尊重的基础上。 本土化策略 为了更好地与当地用户互动&#xff0c;你的品牌、产品或服务需要与他们的文化和生活方式紧密相连。 例如&…

javaee spring aop 的五种通知方式

spring配置文件 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xmlns:aop"http://www.springframework.…

好用免费的Chat GPT(亲测有用)

1、MindLink麦灵 MindLink麦灵 点进登录后 普通用户可以提问100次 2、你问我答 你问我答 无限次数的。 3、灵感 灵感 点击链接后会提示你如何下载使用。 这个有win版和mac版&#xff0c;点击登陆后&#xff0c;每日都会有30次GPT3/3.5的提问。 4、WebTab 在浏览器插件中…

软文推广效果怎么样?这篇揭晓答案

软文推广是一种常用的网络营销手段&#xff0c;它通过以文章形式发布关于产品、服务或品牌的信息&#xff0c;来引起受众的兴趣和关注。相较于直接宣传广告&#xff0c;软文推广更注重内容的质量和吸引力&#xff0c;能够更好地传递信息并提升用户转化率。本文伯乐网络传媒将探…

易点易动库存管理系统与ERP系统打通,帮助企业实现低值易耗品管理

现今,企业管理日趋复杂,无论是核心经营还是辅助环节,都需要依靠信息化手段来提升效率。而低值易耗品作为企业日常运营中的必需品,其管理也面临诸多挑战。传统做法效率低下,容易出错。如何通过信息化手段实现低值易耗品的高效管理,成为许多企业必顾及的一个课题。 易点易动作为…

【广州华锐互动】VR景区云游:打造沉浸式网上虚拟旅游体验

VR景区云游体验是一种全新的旅游体验方式&#xff0c;通过虚拟现实技术&#xff0c;让游客在家中就能身临其境地游览各大景区。这种展示方式不仅节省了游客的时间和金钱&#xff0c;还能让他们在未出发前就对景区有更深入的了解。 通过虚拟现实技术&#xff0c;用户可以在景区内…

.NET之后,再无大创新

回想起来&#xff0c;2001年发布的.NET已经是距离最近的一次软件开发技术的整体创新了&#xff0c;后续的新技术就没有在各个端都这么成功的了。.NET是Windows平台下软件开发技术的巨大变革。在此之前&#xff0c;有VB、C&#xff08;MFC&#xff09;、JSP&#xff0c;在此之后…

Mojo:为Web应用程序提供了完整的框架,包括路由、模板、插件、Websocket、HTTP客户端、HTTP服务器、配置文件管理等功能

Mojo是一种高级的、动态的Perl Web应用程序框架&#xff0c;它可以用来开发Web应用程序&#xff0c;定位于速度、简单和可扩展性。Mojo的设计理念是简洁、灵活、易用和高效&#xff0c;它为Web应用程序提供了完整的框架&#xff0c;包括路由、模板、插件、Websocket、HTTP客户端…

前端使用elementui开发后台管理系统的常用功能(持续更新)

前言&#xff1a;本次的文章完全是自己开发中遇到的一些问题&#xff0c;经过不断的修改终于完成的一些功能&#xff0c;当个快捷的查看手册吧~ elementui开发后台管理系统常用功能 高级筛选的封装elementui的表格elementui的表格实现跨页多选回显elementui的表单elementui的日…

[LeetCode周赛复盘] 第 112场双周赛20230903

[LeetCode周赛复盘] 第 112场双周赛20230903 一、本周周赛总结2839. 判断通过操作能否让字符串相等 I1. 题目描述2. 思路分析3. 代码实现 2840. 判断通过操作能否让字符串相等 II1. 题目描述2. 思路分析3. 代码实现 2841. 几乎唯一子数组的最大和1. 题目描述2. 思路分析3. 代码…

如何修复老照片?老照片修复翻新的方法

老旧照片&#xff0c;尤其是黑白照片&#xff0c;往往因为年代久远、保存方式不当等原因而出现褪色、污损、划痕等问题&#xff0c;会比较难以修复&#xff0c;就算是技术精湛的专业修复师&#xff0c;也是需要投入极大时间精力的&#xff0c;效果也是不可预料的。 修复老照片…

【JUC系列-04】精通Synchronized底层的实现原理

JUC系列整体栏目 内容链接地址【一】深入理解JMM内存模型的底层实现原理https://zhenghuisheng.blog.csdn.net/article/details/132400429【二】深入理解CAS底层原理和基本使用https://blog.csdn.net/zhenghuishengq/article/details/132478786【三】熟练掌握Atomic原子系列基本…