stream集合中的对象的BigDecimal属性去重后从大到小排序,如果有null排在第一位,返回这个属性的集合
时间: 2024-10-29 12:21:20 浏览: 6
要在Java的Stream API中处理BigDecimal类型的集合,并去除重复项并按照值的大小(包括null视为最小值)降序排列,你可以这样做:
```java
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
public List<BigDecimal> sortAndRemoveDuplicates(List<YourClass> list) {
// 获取每个对象的BigDecimal属性
List<BigDecimal> bigDecimals = list.stream()
.map(YourClass::getBigDecimalProperty)
.filter(Objects::nonNull)
.distinct() // 去除重复
.sorted(Comparator.nullsFirst(Comparator.reverseOrder())) // 按降序排列(null在前)
.collect(Collectors.toList());
return bigDecimals;
}
// 假设YourClass是一个包含BigDecimal属性的类
class YourClass {
private BigDecimal bigDecimalProperty;
// getters and setters...
}
// 使用方法
List<YourClass> yourList = ...; // 填充数据
List<BigDecimal> sortedCollection = sortAndRemoveDuplicates(yourList);
```
阅读全文