多個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