java把一个list根据某个字段去重
时间: 2023-05-18 18:04:21 浏览: 279
可以使用Java 8的Stream API来实现,具体代码如下:
List<Person> distinctPersons = persons.stream()
.collect(Collectors.collectingAndThen(
Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(Person::getField))),
ArrayList::new
));
其中,Person是一个自定义的类,getField()是获取需要去重的字段的方法。这段代码会将List<Person>中根据getField()去重后的结果存储在distinctPersons中。
相关问题
java实用stream方式 list根据某个字段去重
可以使用Java 8中的Stream API来根据某个字段去重List。具体的实现方法可以参考以下代码:
假设我们有一个Person类,它有两个字段:id和name。
```java
public class Person {
private int id;
private String name;
public Person(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
}
```
现在我们有一个List<Person>,我们想要根据id字段去重。可以使用以下代码:
```java
List<Person> persons = new ArrayList<>();
persons.add(new Person(1, "Alice"));
persons.add(new Person(2, "Bob"));
persons.add(new Person(1, "Charlie"));
persons.add(new Person(3, "David"));
List<Person> uniquePersons = persons.stream()
.collect(Collectors.toMap(Person::getId, Function.identity(), (p1, p2) -> p1))
.values()
.stream()
.collect(Collectors.toList());
```
首先,我们使用`Collectors.toMap()`方法将List转换为Map,其中key是id字段,value是Person对象本身。当出现重复的key时,我们使用第三个参数指定了如何处理重复的值,这里我们选择保留第一个值即可。
然后,我们调用Map的`values()`方法获取所有的value,并将其转换为Stream。
最后,我们再将Stream转换为List,即可得到去重后的结果。
注意,这种方法只能去除相同id的Person对象,如果需要根据其他字段去重,需要相应地更改代码。
java list根据某个字段去重
假设你有一个包含多个对象的List,现在你想根据其中某个字段去重,可以按照以下步骤进行操作:
1. 创建一个新的HashSet。
2. 遍历List中的每个对象,将要去重的字段值作为key存入HashSet中。由于HashSet只会存储不同的key,所以相同的key只会被存储一次。
3. 创建一个新的List,遍历原始List中的每个对象,再从HashSet中查询该对象的要去重的字段是否存在。如果存在,则将该对象添加到新的List中。
具体的Java代码如下所示:
```java
List<Student> students = new ArrayList<>();
// 假设Student类中有一个name字段需要去重
// ...
Set<String> nameSet = new HashSet<>();
List<Student> distinctStudents = new ArrayList<>();
for (Student student : students) {
if (nameSet.add(student.getName())) {
distinctStudents.add(student);
}
}
```
这段代码中,我们遍历了原始List中的每个对象,如果该对象的name字段值没有被添加到HashSet中(即HashSet的add方法返回了true),则将该对象添加到新的List中。最终,我们得到的distinctStudents就是根据name字段去重后的List。
阅读全文