stream对某个字段去重
时间: 2023-09-03 08:14:09 浏览: 128
回答: 如果你想使用stream对某个字段进行去重,可以使用以下两种方法。第一种方法是使用distinct()方法,例如:
```
List<TestCommodity> testCommodityList = new ArrayList<>();
// 假设testCommodityList是一个包含多个TestCommodity对象的列表
List<TestCommodity> distinctList = testCommodityList.stream()
.distinct()
.collect(Collectors.toList());
```
这将返回一个去重后的列表,其中根据对象的equals()方法进行比较。如果你想根据某个字段进行去重,可以重写TestCommodity类的equals()和hashCode()方法,以便根据该字段进行比较。
第二种方法是使用Collectors.toCollection()方法结合TreeSet来实现去重,例如:
```
List<TestCommodity> testCommodityList = new ArrayList<>();
// 假设testCommodityList是一个包含多个TestCommodity对象的列表
List<TestCommodity> distinctList = testCommodityList.stream()
.collect(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(TestCommodity::getName))));
```
这将返回一个去重后的列表,其中根据TestCommodity对象的getName()方法进行比较。注意,这种方法将返回一个有序的列表。
综上所述,你可以使用stream的distinct()方法或Collectors.toCollection()方法结合TreeSet来对某个字段进行去重。
阅读全文
相关推荐

















