-
2021-11-30 16:34:50
数据库查询出来 的List ,需要进行转换在到页面进行显示。
通过java list stream()流的方式进行循环
final Map<String, BigDecimal> enterMap = enterTime.stream().collect(Collectors.toMap(EChartVO::getTitleType, EChartVO::getMaxData)); final Map<String, BigDecimal> exitMap = exitTime.stream().collect(Collectors.toMap(EChartVO::getTitleType, EChartVO::getMinData)); //将两个Map进行数据合并,如果有冲突的取主map的 V1,没有冲突的,补0 (BigDecimal.ZERO) //使用TreeMap 是为了对Key 进行排序 Map<String, BigDecimal> total = new TreeMap<>(enterMap); exitMap.forEach((key,value)-> total.merge(key,BigDecimal.ZERO,(v1,v2) -> v1)); Map<String, BigDecimal> total2 = new TreeMap<>(exitMap); enterMap.forEach((key,value)-> total2.merge(key,BigDecimal.ZERO,(v1,v2) -> v1)); Map<String, BigDecimal> total3 = new TreeMap<>(exitMap); enterMap.forEach((key,value)-> total3.putIfAbsent(key,BigDecimal.ZERO));
toal2跟total3得到的结果是一样
//将两个Map进行数据合并,如果有冲突的取主map的 V1,没有冲突的,补0 (BigDecimal.ZERO) //使用TreeMap 是为了对Key 进行排序
merge(K key, V value,BiFunctionsuper V, ? super V, ? extends V> remappingFunction):
* 功能大部分与compute相同,不同之处在于BiFunction中apply的参数,入参为oldValue、value,
* 调用merge时根据两个value进行逻辑处理并返回value。
我想要的结果是,enterMap 里跟exitMap里面进行合并两次,因为两个Map里面的Key有相同,也有不同,如果相同就取自己,如果不同,我的需求是补0,如果说想要在不同的时候,取有值的,刚修改如下:
Map<String, BigDecimal> total2 = new TreeMap<>(exitMap); enterMap.forEach((key,value)-> total2.merge(key,value,(v1,v2) -> v1));
enterMap={2021-11-22=10, 2021-11-11=23, 2021-11-12=6, 2021-11-02=1, 2021-11-29=1, 2021-11-18=5, 2021-11-19=36, 2021-11-17=11} exitMap={2021-11-22=6, 2021-11-11=24, 2021-11-12=4, 2021-11-01=4, 2021-11-29=1, 2021-11-18=5, 2021-11-19=31, 2021-11-17=10} total={2021-11-01=0, 2021-11-02=1, 2021-11-11=23, 2021-11-12=6, 2021-11-17=11, 2021-11-18=5, 2021-11-19=36, 2021-11-22=10, 2021-11-29=1} total2={2021-11-01=4, 2021-11-02=0, 2021-11-11=24, 2021-11-12=4, 2021-11-17=10, 2021-11-18=5, 2021-11-19=31, 2021-11-22=6, 2021-11-29=1} data={minMon=[4, 0, 24, 4, 10, 5, 31, 6, 1], maxMon=[0, 1, 23, 6, 11, 5, 36, 10, 1], titleMon=[2021-11-01, 2021-11-02, 2021-11-11, 2021-11-12, 2021-11-17, 2021-11-18, 2021-11-19, 2021-11-22, 2021-11-29]}
上面是结果
更多相关内容 -
Java中 List《map》把里面map中某个key相同记录的其他key 的 value 合并
2020-09-02 11:29:03Java中 List《map》把里面map中某个key相同记录的其他key 的 value 合并 Java中 List《map》把里面map中某个key相同记录的其他key 的 value 合并 -
判断List和Map是否相等并合并List中相同的Map
2020-08-26 15:12:20今天小编就为大家分享一篇关于判断List和Map是否相等并合并List中相同的Map,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧 -
Java 将两个Map对象合并为一个Map对象
2021-02-12 19:45:11实现方式是通过 putAll() 方法将多个 map 对象中的数据放到另外一个全新的 map 对象中,代码如下所示,展示了两个 map 对象的合并,如果是多个 map 合并也是用这种方式。public static void main(String[] args) {...实现方式是通过 putAll() 方法将多个 map 对象中的数据放到另外一个全新的 map 对象中,代码如下所示,展示了两个 map 对象的合并,如果是多个 map 合并也是用这种方式。
public static void main(String[] args) {
Map map1 = new HashMap();
map1.put("one", "一");
map1.put("two", "二");
map1.put("three", "三");
Map map2 = new HashMap();
map1.put("ten", "十");
map1.put("nine", "九");
map1.put("eight", "八");
// 合并
Map combineResultMap = new HashMap();
combineResultMap.putAll(map1);
combineResultMap.putAll(map2);
// 合并后打印出所有内容
for (Map.Entry entry : combineResultMap.entrySet()) {
System.out.println(entry.getKey() + ":" + entry.getValue());
}
}
合并后的 map 对象打印结果如下:
-
java stream 两个List<Map>合并
2020-08-31 18:01:10利用Java8的Stream流工具,实现两个List<Map, Object>>合并,通过Map中的某个key值实现数据合并// ============== new三条源数据,value值均为一个字,加入list ================== Map<String, Object> map1 = new HashMap<>(); map1.put("id", "1"); map1.put("ab", "甲"); map1.put("ac", "乙"); Map<String, Object> map2 = new HashMap<>(); map2.put("id", "2"); map2.put("ab", "丙"); map2.put("ac", "丁"); Map<String, Object> map3 = new HashMap<>(); map3.put("id", "3"); map3.put("ab", "小果"); map3.put("ac", "相机"); List<Map<String, Object>> sourceList = new ArrayList<>(); sourceList.add(map1); sourceList.add(map2); sourceList.add(map3); // ============== new三条新数据,value值均为两个字,加入list ================== Map<String, Object> newMap1 = new HashMap<>(); newMap1.put("id", "1"); newMap1.put("ww", "小强"); newMap1.put("nn", "小张"); Map<String, Object> newMap2 = new HashMap<>(); newMap2.put("id", "2"); newMap2.put("ww", "王红"); newMap2.put("nn", "王亮"); Map<String, Object> newMap3 = new HashMap<>(); newMap3.put("id", "3"); newMap3.put("ww", "朱大"); newMap3.put("nn", "朱二"); List<Map<String, Object>> newList = new ArrayList<>(); newList.add(newMap1); newList.add(newMap2); newList.add(newMap3); // ============ 把newList的所有内容添加到sourceList中 ============== sourceList.addAll(newList); sourceList.forEach(System.out::println); System.out.println(); /* 输出结果: {ab=甲, ac=乙, id=1} {ab=丙, ac=丁, id=2} {ab=小果, ac=相机, id=3} {ww=小强, nn=小张, id=1} {ww=王红, nn=王亮, id=2} {ww=朱大, nn=朱二, id=3} 合并相同id下的value集合,我们要求合并后的结果: {nn=小张, ww=小强, ab=甲, ac=乙, id=1} {nn=王亮, ww=王红, ab=丙, ac=丁, id=2} {nn=朱二, ww=朱大, ab=小果, ac=相机, id=3} */ // ================ 利用Java8的Stream流实现合并 ========================= List<Map<String,Object>> combine = sourceList.stream() .collect(Collectors.groupingBy(group -> group.get("id").toString())) // 根据map中id的value值进行分组, 这一步的返回结果Map<String,List<Map<String, Object>>>,目的是将相同id下的value归类到一个value下 .entrySet() // 得到Set<Map.Entry<String, List<Map<String, Object>>> .stream() // 使用Java8的流 .map(m -> { // 进入映射环境 // m.getValue()的结果是 List<Map<String, Object>> Map<String, Object> collect = m.getValue().stream() // 核心重点!o.entrySet() 的结果是 Set<Map.Entry<String, Object>>,通过flatMap将value合并成一个stream .flatMap(o -> o.entrySet().stream()) // (m1, m2) -> m2 的意思是如果 m1 == m2 则使用m2 .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (m1, m2) -> m2)); return collect; }).collect(Collectors.toList()); // 输出测试, combine.forEach(System.err::println); /* 测试结果: {nn=小张, ww=小强, ab=甲, ac=乙, id=1} {nn=王亮, ww=王红, ab=丙, ac=丁, id=2} {nn=朱二, ww=朱大, ab=小果, ac=相机, id=3} 达到目标要求(●'◡'●) */
(本文完 ! )
如需引用此文内容,必须付此原文链接! -
java 合并两个map
2022-04-01 11:10:12public static Map mapMerge(List<Map> list) { Map<Object, List> map = new HashMap<>(); for (Map m : list) { Iterator<Object> it = m.keySet().iterator(); while (it.hasNext())...public static Map mapMerge(List<Map> list) { Map<Object, List> map = new HashMap<>(); for (Map m : list) { Iterator<Object> it = m.keySet().iterator(); while (it.hasNext()) { Object key = it.next(); if (!map.containsKey(key)) { List newList = new ArrayList<>(); newList.add(m.get(key)); map.put(key, newList); } else { map.get(key).add(m.get(key)); } } } return map; }
-
java-合并两个Map
2021-05-15 16:49:09Java8中如何合并两个map? 如何处理Map含有重复元素的情况? 1. 初始化 我们定义两个map实例 private static Map<String, People> map1 = new HashMap<>(); private static Map<String, People>... -
java8 两个List对象合并和List的转换成Map
2020-08-25 14:57:34} ListA和ListB通过id相同进行筛选获取ListA public static List<Goods> TwoToList(List<Goods> goods,List<Users> users) { Map, Users> listMap = users.stream().collect(Collectors.toMap(x -> x.getUserId(), ... -
Java8两个list集合合并成一个list集合
2021-10-27 11:13:02为什么要用Lambda表达式和Stream流做集合的处理?... 合并成一个新的集合 C:{"id": "12345","name": "zhangsan", "age": 23} 1、将listA集合转换为map Map<String, Person> map = listA.stre -
JAVA合并两个具有相同key的map为list
2021-02-28 06:08:08JAVA合并两个具有相同key的map为list,不多说,直接上代码:/*** list合并类*/public class MapUtil {public static void main(String[] args){List> osvList = new ArrayList<>();Map map1 = new HashMap&... -
java8 List<Map> 操作 以某个key合并两个List<Map>
2020-09-18 16:18:30public static List<HashMap<String, Object>> merge(ArrayList<HashMap<String, Object>> list1,ArrayList<HashMap<String, Object>> list2,String key) { //List<... -
java8,如何根据条件合并两个List<HashMap>
2020-01-13 14:01:28假设两个List<HashMap> map1和List<HashMap> map2, map1的key有key1,key2,key3,key4,key5, map2有key1,key2,key6,key7,key8, 现需要以key1和key2为依据,若两者相等则将map1和map2中的元素合并为新的List... -
java8 合并两个 list<map>, 并将userId 相同的所有属性合并到一个map中
2021-05-27 17:00:27* @Description: 合并两个list<map>,并将userId相同的其它属性合并 * @Title: mergeList * @param: @return * @return: List<Map<String,Object>> * @throws */ public static... -
详解Java8合并两个Map中元素的正确姿势
2021-03-09 21:05:031. 介绍本入门教程将介绍Java8中如何合并两个map。更具体说来,我们将研究不同的合并方案,包括Map含有重复元素的情况。2. 初始化我们定义两个map实例private static Map map1 = new HashMap<>();private ... -
java合并元素为map的list
2018-08-01 16:56:05list的元素信息如下图所示: {GLRS=0, BMMC=部门1, XCZY=57}, {GLRS=7, BMMC=部门1, XCZY=0}, {GLRS=0, BMMC=部门2, XCZY=14}, {GLRS=4, BMMC=部门2, XCZY=0}, {GLRS=0, BMMC=部门3, XCZY=66}, {GLRS=9, BMMC... -
java 2个list合并去重
2021-03-19 09:31:28java 2个list合并去重[2021-02-02 13:42:37]简介:php去除nbsp的方法:首先创建一个PHP代码示例文件;然后通过“preg_replace("/(\s|\ \;| |\xc2\xa0)/", " ", strip_tags($val));”方法去除所有nbsp即可。... -
java jdk8 使用stream实现两个list集合合并成一个list集合(对象属性的合并)
2022-01-14 16:38:11根据两个List中的某个相同字段合并成一条List,包含两个List中的字段 目录一、前言二、示例示例1:java8 合并两个 list<map>示例2:java8 合并两个 list示例3:java8 合并两个 list,集合个数前者小于后者,要后者... -
Java8合并List(Map),为一个大Map
2019-11-08 16:47:08-----数据 [{gailun=盖伦},{zhaoxin=赵信},{ruiwen=瑞文}] -----目标 {gailun=盖伦,zhaoxin=赵信,...List<Map<String,Object>> lists=new ArrayList<>(); Map<String, Object> merged = ... -
java8 Stream对List<Map>的分组合并操作
2021-03-17 10:57:39话不多说,直接上代码,请朋友们自行测试~public class Gamer47 {public static void main(String[] args) {//将...//将两个List合并成一个List,“name”为map的keymergeTwoListmapToOneListmap(null,null,"name"... -
java8 lambda小试牛刀,利用Stream把list转map,并将两个list的数据对象合并起来
2017-03-17 16:07:41java8 lambda小试牛刀,利用Stream把list转map,并将两个list的数据对象合并起来 -
java8中stream流解决两个list合并问题
2022-01-25 19:39:43当我们遇到需要将两个list合并成一个list实体的时候,可以使用java8的stream流来解决,以下是我的一个小demo,可供大家参考学习。 public ResultDto listBalancer(Integer pageIndex, Integer pageLimit, String ... -
合并两个List并去掉重复项
2021-02-12 20:07:25工作中很多时候需要用到合并两个List并去除其中的重复内容。这是一个很简单的操作,这里主要是记录一下通过用Stream来完成这项操作。在java8之前比较常规的做法是将两个List添加到一个Set中,因为Set的内容不可重复... -
两个List<Map>快速合并
2020-04-17 11:20:45在日常的开发中经常遇见需要对两个List<Map<String,Object>>合并后的数据进行处理,常用的方法无非是各自for循环再...针对此情况,利用Java 8 Lambda可以快速将两个List<Map<String,Object>... -
java8两个List指定对象属性进行合并
2021-08-05 09:19:28public static void main(String[] args... List<EmpQuDaoOneAdmin> empQuDaoOneAdmins = new ArrayList<>(); EmpQuDaoOneAdmin dEmpQuDaoOneAdmin = new EmpQuDaoOneAdmin(); dEmpQuDaoOneAdmin.setE... -
Java 将多个list合并成一个
2022-02-15 17:13:20List<Integer> list1 = Arrays.asList(1, 2, 3); List<Integer> list2 = Arrays.asList(4, 5, 6); List<Integer> list3 = Arrays.asList(7, 8, 9); List<Integer> merge -
java8合并两个List
2020-06-03 10:46:05解决问题:根据两个List中的某个相同字段合并成一条List,包含两个List中的字段 举例: list1: [{pid=1,pname=衣服,picture=http://1.jpg,desc=111},{pid=2,pname=衣服2,picture=http://2.jpg,desc=222}] list2: [{... -
java两个List「HashMap」去重合并----实现方式一
2020-09-23 16:08:55封装的list,需要把期中一个list合并到另一个中,覆盖之前已存在的。 这里展示实现的某一种方式如下: 目标list1集合: List<HashMap> list1 = new ArrayList<HashMap>(); list1集合示例: ... -
JAVA8 Stream List转Map 合并 key
2019-07-10 19:15:23stream转map后如何控制合并, 查看Collector.toMap()后发现里面有一个mergeFunction, 然后我就做了如下的操作,记录一下 List<AdvanceStockOutDistributionDetailVO> list = Optional.ofNullable(r... -
Java 两个list数据根据某个字段合并
2018-10-12 20:50:01之前遇到一个需求,字段是每小时那种(2018101208)。然后服务给我数据少了部分。然后我需要自已推算。...两个list根据某个字段进行合并。 1、获取过去15天的小时 初始化变量 public String start...