工作中遇到了,多个List<Map<K,V>>整合去重排序的问题,自己用比较笨拙的方法处理,希望大家有新的想法分享一下:
步骤1、整合Map集合的key值,去重后放到一个List集合里
List<Map<String, Object>> touping = new ArrayList<Map<String, Object>>(); List<Map<String, Object>> zong = new ArrayList<Map<String, Object>>(); List<Map<String, Object>> toupingNum = new ArrayList<Map<String, Object>>(); List<Map<String, Object>> lists = new ArrayList<Map<String, Object>>(); List<String> newlists = new ArrayList<String>(); Object[] arr=null;for( int i = 0;i<touping.size();i++) { String key = touping.get(i).get("key").toString(); newlists.add(key); } for( int i = 0;i<zong.size();i++) { String key = zong.get(i).get("key").toString(); if (newlists.indexOf(key) == -1) {// 判断key是不是已经存在,属于去重手段 newlists.add(key);// 不存在z添加 } } for( int i = 0;i<toupingNum.size();i++) { String key = toupingNum.get(i).get("key").toString(); if (newlists.indexOf(key) == -1) { newlists.add(key); } }
步骤2、(我的key值是时间,所以这用到了时间比较大小)将key值进行排序
DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh"); if(newlists.size()>0){ Object arr=newlists.toArray(); for(int i=0;i<arr.length-1;i++){ for(int j = i+1 ; j < arr.length ; j++){ Object temp ; Date dt1 = df.parse(arr[i].toString()); Date dt2 = df.parse(arr[j].toString()); if(dt1.getTime() > dt2.getTime()){//时间比较大小 Date.getTime()返回一个long型的毫秒值 temp = arr[j]; arr[j] = arr[i]; arr[i] = temp; } } } }
步骤3、整合生成最终结果
if(arr!=null) { for (int i = 0; i < arr.length; i++) { String key = arr[i].toString(); int a = 0; int b = 0; int c = 0; for (Map<String, Object> map : zong) { if (map.get("key").toString().equals(key)) { a = Integer.parseInt(map.get("a").toString()); } } for (Map<String, Object> map : touping) { if (map.get("key").toString().equals(key)) { b = Integer.parseInt(map.get("b").toString()); } } for (Map<String, Object> map : toupingNum) { if (map.get("key").toString().equals(key)) { double c1 = Double.parseDouble(map.get("c").toString()); c = (int) c1; } } Map<String, Object> resoultMap = new HashMap<String, Object>(); resoultMap.put("key", key); resoultMap.put("a", a); resoultMap.put("b", b); resoultMap.put("c", c); lists.add(resoultMap); } }
三步之后 ,集合lists就是我们想要的结果,不过表示很麻烦,刚工作不久,希望以后会想到更好的方法。。。
时间: 2024-10-12 03:45:16