資料對比去重公共類
阿新 • • 發佈:2018-11-24
package com.cattsoft.project.fzp.comm.util; import com.cattsoft.comm.tools.StringUtil; import java.util.*; public class ContrastDataUtil { /** * 把firstList跟secondList對比,找出firstList資料中跟secondList不一樣的記錄 * @param firstList List<Map<String, Object>> * @param secondList List<Map<String, Object>> * @param cols 要對比的欄位 * @return 返回值 */ public static List<Map<String, Object>> contrastData(List<Map<String, Object>> firstList , List<Map<String, Object>> secondList, String[] cols){ List<Map<String, Object>> resultList = new ArrayList<Map<String,Object>>(); Set<String> fullSet = new HashSet<String>(secondList.size());//獲取總的key值 for(Map<String, Object> rowMap : secondList){ StringBuilder key = new StringBuilder(); for (int i = 0; i < cols.length; i++) { String value = StringUtil.toString(rowMap.get(cols[i])); if(i == cols.length-1){ key.append(value); }else { key.append(value).append("_"); } } fullSet.add(key.toString()); } for(Map<String, Object> rowMap : firstList){ StringBuilder key = new StringBuilder(); for (int i = 0; i < cols.length; i++) { String value = StringUtil.toString(rowMap.get(cols[i])); if(i == cols.length-1){ key.append(value); }else { key.append(value).append("_"); } } if(!fullSet.contains(key.toString())){ resultList.add(rowMap); fullSet.add(key.toString());//去重 } } return resultList; } }