List<Map>中根據某個屬性去重,不重複的值則覆蓋null
阿新 • • 發佈:2021-01-21
/** * 根據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) returnnull; //用於儲存合併後的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; }