java给指定字段去重
时间: 2023-06-29 20:12:57 浏览: 133
基于java的单链表增、删、改、查、去重操作
如果您想要对 Java 中的一个对象列表中的某个字段进行去重,可以使用 Java 8 中的流操作和 Collectors 工具类来实现。以下是一个示例代码:
```
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
// 创建一个包含重复元素的列表
List<Person> personList = new ArrayList<>();
personList.add(new Person("Alice", 20));
personList.add(new Person("Bob", 30));
personList.add(new Person("Charlie", 20));
personList.add(new Person("Dave", 40));
personList.add(new Person("Eve", 20));
// 使用流和 Collectors 工具类进行去重
List<Person> uniqueList = personList.stream()
.collect(Collectors.collectingAndThen(
Collectors.toCollection(() -> new java.util.TreeSet<>(Comparator.comparing(Person::getAge))),
ArrayList::new));
// 输出去重后的列表
uniqueList.forEach(System.out::println);
}
}
class Person {
private final String name;
private final int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
@Override
public String toString() {
return name + " (" + age + ")";
}
}
```
在这个示例代码中,我们创建了一个包含重复元素的 `Person` 对象列表。然后,我们使用流和 Collectors 工具类对其中 `age` 字段进行了去重操作。具体来说,我们使用 `Collectors.toCollection()` 方法将流中的元素收集到一个 `TreeSet` 集合中,由于 `TreeSet` 是有序且不重复的集合,因此这一步操作会去除重复元素。最后,我们将 `TreeSet` 转换为 `ArrayList`,并将结果赋值给一个新的列表 `uniqueList`。最终,我们输出去重后的列表,可以看到其中的 `age` 字段已经没有重复值了。
阅读全文