list<Object> 对象集合 去重
在项目中遇到了在list集合中,要根据User对象的ID进行去重.使用了以下几种方法,但唯独第三种生效.先挖个坑,等我看完文档了,再来填.
public static List<User> removeDuplicate(List<User> list) {
ObjectMapper objectMapper = new ObjectMapper();
try {
List<User> tempList = new ArrayList<>();
System.out.println("去重前:"+objectMapper.writeValueAsString(list.toString()));
/**
* 第一种 不生效
*/
// list = list.stream().distinct().collect(Collectors.toList());
/**
* 第二种 不生效
*/
// List<User> returnList = list.stream().filter(
// v -> {
// if (tempList.contains(v.getId())){
// return false;
// }else {
// tempList.add(v);
// return true;
// }
// }
// ).collect(Collectors.toList());
/**
* 第三种 生效
*/
List<User> userList_new = Lists.newArrayList();
list.stream().forEach(
s -> {
if (!userList_new.contains(s)) {
userList_new.add(s);
}
}
);
System.out.println("去重后:"+objectMapper.writeValueAsString(userList_new.toString()));
return list;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}