博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java map合并_java 实现合并map示例Demo1
阅读量:4475 次
发布时间:2019-06-08

本文共 4329 字,大约阅读时间需要 14 分钟。

packagecom.drew.test;importjava.util.Arrays;importjava.util.List;importjava.util.Map;importcom.alibaba.fastjson.JSON;importcom.google.common.collect.ImmutableMap;importcom.google.common.collect.Lists;importcom.google.common.collect.Maps;/***@authorzero 2019/04/17*/

public classMergeMapOrList {/*** 根据固定区间值计算范围:分布区间

*

*@paramrange 固定区间范围

*@paramlist 整数集合

*@return区间map:key为区间,value为list中元素包含在其中的个数。

*@authorzero 2019/04/16*/

public static Map calcToList(int range, Listlist) {

Map result = Maps.newHashMap();//结果:key为区间如[0,30),value为访问数。

for(Integer timeKey : list) {int start = timeKey /range;int end = timeKey / range + 1;

String key= "[" + (start * range) + "," + (end * range) + ")";if(result.containsKey(key)) {

result.put(key, result.get(key)+ 1);

}else{

result.putIfAbsent(key,1);

}

}returnresult;

}/*** 根据固定区间值计算范围:分布区间

*

*@paramrange 区间的跨度

*@parammap key:数据,value:此区间的个数

*@returnmap key:区间范围,value:此区间的个数

*@authorzero 2019/04/16*/

public static Map calcToMap(int range, Mapmap) {

Map result = Maps.newHashMap();//结果:key为区间如[0,30),value为访问数。

for(Integer timeKey : map.keySet()) {int start = timeKey /range;int end = timeKey / range + 1;

String key= "[" + (start * range) + "," + (end * range) + ")";if(result.containsKey(key)) {

result.put(key, result.get(key)+map.get(timeKey));

}else{

result.putIfAbsent(key, map.get(timeKey));

}

}returnresult;

}/*** 合并两个map集合

*

*@paramoldMap

*@paramnewMap

*@return*@authorzero 2019/04/17*/

public static Map mergeMap(Map oldMap, MapnewMap) {if (oldMap == null ||oldMap.isEmpty())returnnewMap;if (newMap == null ||newMap.isEmpty())returnoldMap;

Map tmpMapBigger =Maps.newHashMap();

Map tmpMapSmall =Maps.newHashMap();if (oldMap.size()

tmpMapBigger.putAll(newMap);

tmpMapSmall.putAll(oldMap);

}else{

tmpMapBigger.putAll(oldMap);

tmpMapSmall.putAll(newMap);

}for(String iKey : tmpMapSmall.keySet()) {if(tmpMapBigger.containsKey(iKey)) {

tmpMapBigger.put(iKey, tmpMapBigger.get(iKey)+tmpMapSmall.get(iKey));

}else{

tmpMapBigger.put(iKey, tmpMapSmall.get(iKey));

}

}returntmpMapBigger;

}/*** 合并两个map数据(建议使用)

*

*@parammergedMap

*@paramnewMap

*@return*@authorzero 2019/04/17*/

public static Map mergeMapPlus(Map mergedMap, MapnewMap) {if (mergedMap.isEmpty() || mergedMap == null)returnnewMap;if (newMap.isEmpty() || newMap == null)returnnewMap;for(String key : newMap.keySet()) {if(mergedMap.containsKey(key)) {

mergedMap.put(key, mergedMap.get(key)+newMap.get(key));

}else{

mergedMap.put(key, newMap.get(key));

}

}returnmergedMap;

}

@SafeVarargspublic static Map mergeMulMap(Map... maps) {

List> list =Arrays.asList(maps);

Map result =Maps.newHashMap();for (int i = 0; i < list.size(); i++) {if (list.get(i).isEmpty() || list.get(i) == null) {continue;

}else{for(String key : list.get(i).keySet()) {if(result.containsKey(key)) {

result.put(key, result.get(key)+list.get(i).get(key));

}else{

result.put(key, list.get(i).get(key));

}

}

}

}returnresult;

}public static Map mergeMulMap2(List>list) {

Map result =Maps.newHashMap();for (int i = 0; i < list.size(); i++) {if (list.get(i).isEmpty() || list.get(i) == null) {continue;

}else{for(String key : list.get(i).keySet()) {if(result.containsKey(key)) {

result.put(key, result.get(key)+list.get(i).get(key));

}else{

result.put(key, list.get(i).get(key));

}

}

}

}returnresult;

}public static voidmain(String[] args) {

System.out.println("==================================================");int range = 30;//30秒

List list =Lists.newArrayList(0, 1, 3, 4, 30, 31, 45, 67, 87, 90, 94, 100, 150, 1770, 1800, 360000, 360001, 360009);

System.out.println("原始数据list2Map:\t" +JSON.toJSONString(calcToList(range, list)));

Map list2Map =calcToList(range, list);

Map map = ImmutableMap.of(0, 3, 1, 3, 34, 6, 35, 6, 67, 9);

System.out.println("原始数据map2Map:\t" +JSON.toJSONString(calcToMap(range, map)));

Map map2Map =calcToMap(range, map);

System.out.println("--------------不同Map合并方法:万变不离其宗!--------------");

System.out.println("mergeMulMap:\t" +JSON.toJSONString(mergeMulMap(list2Map, map2Map)));

System.out.println("mergeMulMap2:\t" +JSON.toJSONString(mergeMulMap2(Arrays.asList(list2Map, map2Map))));

System.out.println("mergeMap:\t" +JSON.toJSONString(mergeMap(list2Map, map2Map)));

System.out.println("mergeMapPlus:\t" +JSON.toJSONString(mergeMapPlus(list2Map, map2Map)));

System.out.println("==================================================");

}

}

转载地址:http://scips.baihongyu.com/

你可能感兴趣的文章
冒泡排序
查看>>
软工之404 Note Found团队
查看>>
关于事件冒泡和浏览器默认行为
查看>>
自动测试框架PyUnit
查看>>
SVN使用—概念及生命周期
查看>>
Solr与Lucene的区别
查看>>
js设计模式--方法的链式调用及回调
查看>>
源代码与二进制异同
查看>>
OAuth 白话简明教程 2.授权码模式(Authorization Code)
查看>>
basler 相机拍照简单类综合Emgu.CV---得到图档--原创
查看>>
启动时有两个win7怎么删除一个
查看>>
Linux计划任务crontab
查看>>
《BI那点儿事》数据流转换——模糊分组转换
查看>>
索引学习 查找 数据结构 梳理
查看>>
阿里社招-1
查看>>
大量数据导入到服务器
查看>>
22.文本框验证和外部url的调用
查看>>
2017-2018-1 20155226 《信息安全系统设计基础》第四周学习总结
查看>>
方法(参数的传递)
查看>>
Vue Baidu Map 插件的使用
查看>>