1. 程式人生 > 實用技巧 >List<Map>中根據某個屬性去重,不重複的值則覆蓋null

List<Map>中根據某個屬性去重,不重複的值則覆蓋null

 /**
     *     根據map中的某個key 去除List中重複的map,如果值不為null,則覆蓋空值
     * @author  shijing
     * @param list
     * @param mapKey
     * @return
     */
    public  List<Map<String, String>> removeRepeatMapByKey(List<Map<String, String>> 
           list){
        if (list.size()<=0) return
null; //用於儲存合併後的List資料 List<Map<String,String>> listCopy = new ArrayList<Map<String,String>>(); //遍歷原始List for (Map<String, String> userInfo : list) { String time = (String) userInfo.get("time"); String left = null; String middle
=null; String right = null; if(userInfo.get("left")!=null) { left = (String) userInfo.get("left"); } if(userInfo.get("middle")!=null) { middle = (String) userInfo.get("middle"); } if(userInfo.get("right")!=null
) { right = (String) userInfo.get("right"); } int j = 0; //遍歷合併後的List for (Map<String, String> userInfoCopy : listCopy) { String timeCopy = (String) userInfoCopy.get("time"); //根據Map的Key判斷,如果已經存在,則把ItemName加入進去並且用逗號隔開 if(time.equals(timeCopy)) { if(left!=null) { userInfoCopy.put("left", left); } if(middle!=null) { userInfoCopy.put("middle", middle); } if(right!=null) { userInfoCopy.put("right", right); } j++; } } //如果不存在,則把本條資料直接插入 if(j == 0) { listCopy.add(userInfo); } } return listCopy; }