Java 8 使用 Stream API 去重 List 对象集合 (根据 userId)
要根据 userId 去重一个 List 对象集合,可以使用 Java 8 的 Stream API。
假设我们有一个 List
- 使用 stream() 方法将 List 转换为 Stream 对象。
- 使用 collect(Collectors.toMap()) 方法将每个 User 对象的 userId 作为 key,User 对象本身作为 value,创建一个 Map 对象。
- 使用 values() 方法获取 Map 中的所有 value,这将返回一个 Collection 对象。
- 使用 collect(Collectors.toList()) 将 Collection 转换为 List,这将返回一个去重后的 List 对象集合。
下面是一个示例代码:
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<User> userList = new ArrayList<>();
userList.add(new User(1, 'John'));
userList.add(new User(2, 'Jane'));
userList.add(new User(1, 'John')); // 重复的 userId
List<User> distinctUserList = userList.stream()
.collect(Collectors.toMap(User::getUserId, user -> user, (oldUser, newUser) -> newUser))
.values()
.stream()
.collect(Collectors.toList());
for (User user : distinctUserList) {
System.out.println(user.getUserId() + ' ' + user.getName());
}
}
}
class User {
private int userId;
private String name;
public User(int userId, String name) {
this.userId = userId;
this.name = name;
}
public int getUserId() {
return userId;
}
public String getName() {
return name;
}
}
输出结果为:
1 John
2 Jane
原文地址: https://www.cveoy.top/t/topic/qEkG 著作权归作者所有。请勿转载和采集!