多个List>整合去重--初次尝试


 工作中遇到了,多个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就是我们想要的结果,不过表示很麻烦,刚工作不久,希望以后会想到更好的方法。。。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM