stream流对集合中的多个字段 包括日期进行去重
时间: 2024-11-17 18:29:34 浏览: 24
List集合多个复杂字段判断去重的案例
Stream API在Java 8及后续版本中引入,用于处理集合数据的一种高效、线程安全的方式。如果你想要从集合中按多个字段,包括日期,进行去重,可以使用`distinct()`方法结合Lambda表达式。这里是一个示例:
```java
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
// 假设我们有一个Person对象列表,其中包含姓名(name)和出生日期(dateOfBirth)
List<Person> people = new ArrayList<>();
// 添加一些含有相同日期但不同名字的对象
// 使用Stream API进行去重,按照姓名和日期排序
List<Person> uniquePeople = people.stream()
.distinct(Comparator.comparing(Person::getName) // 按照姓名
.thenComparing(Person::getDateOfBirth)) // 然后按照日期
.sorted() // 排序
.collect(Collectors.toList()); // 转换回列表
System.out.println(uniquePeople);
}
}
class Person {
private String name;
private LocalDate dateOfBirth;
// getters and setters...
}
```
在这个例子中,`distinct()`会去除所有具有相同姓名和日期的对象。如果只关心日期,可以省略姓名部分的比较。
阅读全文