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;
	     }
posted @ 2022-08-18 11:44  可乐去冰多来番茄酱  阅读(836)  评论(0编辑  收藏  举报