码迷,mamicode.com
首页 > 其他好文 > 详细

多个List<Map<K,V>>整合去重--初次尝试

时间:2016-09-20 11:56:56      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:

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

多个List<Map<K,V>>整合去重--初次尝试

标签:

原文地址:http://www.cnblogs.com/treeLi/p/5887815.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!