list 根据字段去重
时间: 2024-01-21 22:14:10 浏览: 81
以下是使用Java实现List根据字段去重的方法:
方法一:使用HashSet
```java
List<User> list = new ArrayList<>();
// 假设User类有一个字段为age
Set<Integer> ageSet = new HashSet<>();
List<User> newList = new ArrayList<>();
for (User user : list) {
if (ageSet.add(user.getAge())) {
newList.add(user);
}
}
System.out.println("List去重后的集合: " + newList);
```
方法二:使用Java 8的stream和distinct方法
```java
List<User> list = new ArrayList<>();
// 假设User类有一个字段为age
List<User> newList = list.stream()
.filter(distinctByKey(User::getAge))
.collect(Collectors.toList());
System.out.println("List去重后的集合: " + newList);
// 自定义distinctByKey方法
public static <T> Predicate<T> distinctByKey(Function<? super T, Object> keyExtractor) {
Map<Object, Boolean> seen = new ConcurrentHashMap<>();
return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;
}
```
方法三:使用List(可以根据多个字段)
```java
List<String> newList = new ArrayList<>();List<User> userList = new ArrayList<>();
for (User user : list) {
if (!newList.contains("" + user.getAge())) {
newList.add("" + user.getAge());
userList.add(user);
}
}
System.out.println("List去重后的集合: " + userList);
```
阅读全文