java 中map去重合并
例如创建一个如下map对象Map >,外层的map对象的key重复一个或多次,现在需要将相同key的value全部整合在TreeMap里面去,保证外层的key唯一。需求是由于treeMap里面的key是一个时间戳,目标需要截取treemap里面的一个时间段的值。
(本人的GitHub链接https://github.com/Donjhon/spring-boot-demo.git,现在还在发展期,将自己工作学习的点滴共享出来)
实现代码如下所示:
- package com.pcitc.imp.example.util;
- import java.util.HashMap;
- import java.util.IdentityHashMap;
- import java.util.Iterator;
- import java.util.Map;
- import java.util.Map.Entry;
- import java.util.TreeMap;
- public class MapTest {
- public static void main(String[] args) {
- Map<Object, TreeMap<String, Object>> tree = new IdentityHashMap<>();
- TreeMap<String, Object> test0 = new TreeMap<>();
- test0.put("11:01", 111);
- test0.put("11:02", 222);
- TreeMap<String, Object> test1 = new TreeMap<>();
- test1.put("11:03", 333);
- test1.put("11;04", 444);
- String str1 = new String("1");
- String str2 = new String("1");
- String str3 = new String("2");
- String str4 = new String("2");
- tree.put(str1, test0);
- tree.put(str2, test1);
- tree.put(str3, test0);
- tree.put(str4, test1);
- System.out.println(tree);
- Map<Object, TreeMap<String, Object>> map000 = mapK(tree);
- System.out.println(map000);
- }
- @SuppressWarnings("rawtypes")
- public static Map<Object, TreeMap<String, Object>> mapK(Map<Object, TreeMap<String, Object>> map) {
- Map<Object, TreeMap<String, Object>> tree = new HashMap<>();
- for (Entry<Object, TreeMap<String, Object>> vo : map.entrySet()) {
- Object key1 = vo.getKey();
- if (!tree.containsKey(key1)) {
- tree.put(key1, vo.getValue());
- } else {
- TreeMap<String, Object> map1 = vo.getValue();
- Iterator<?> iter = map1.entrySet().iterator();
- while (iter.hasNext()) {
- Map.Entry entry = (Map.Entry) iter.next();
- String key = (String) entry.getKey();
- Object integ = (Integer) entry.getValue();
- tree.get(key1).put(key, integ);
- }
- }
- }
- return tree;
- }
- }