ListMap去重,差集(针对集合里面只有Map非实体对象)
问题:由于业务需求,接口的入参出参都是List
/**
* 该方法可根据指定字段对List<Map>中的数据去重,存在重复的,保存第一组Map
* @param originMapList 源Map数组
* @param keys 依据的去重字段
* @return
*/
public static List deleteDuplicatedMapFromListByKeys(
List<Map<String,Object>> originMapList, List keys){
if(CollectionUtils.isEmpty(originMapList)) return null;
Map tempMap = new HashMap();
for (Map originMap : originMapList) {
String objHashCode = "";
for (Object key : keys) {
String value = originMap.get(key) != null ? originMap.get(key).toString() : "";
objHashCode += value.hashCode();
}
tempMap.put(objHashCode,originMap);
}
List valueList = new ArrayList<>(tempMap.values());
return valueList;
}
测试:
public static void main(String[] args) {
List<Map> list = new ArrayList<>();
Map<String, Object> map1 = new HashMap<String, Object>();
map1.put("id", "11"