本文共 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/