Java 如何将BigDecimal 的list中的null替换成0
时间: 2024-02-25 19:51:29 浏览: 129
你可以使用 Java 中的流(Stream)和Lambda表达式来将BigDecimal的list中的null替换成0,示例如下:
```java
List<BigDecimal> myList = Arrays.asList(new BigDecimal("1.23"), new BigDecimal("2.34"), null, new BigDecimal("4.56"), null, new BigDecimal("5.67"));
List<BigDecimal> newList = myList.stream().map(bd -> bd == null ? BigDecimal.ZERO : bd).collect(Collectors.toList());
System.out.println(newList);
```
输出结果为:`[1.23, 2.34, 0, 4.56, 0, 5.67]`。
这里使用了Java 8的流(Stream)和Lambda表达式,将原列表转换成一个流,然后使用map()方法将流中的每一个元素进行替换操作,如果元素为null,则将其替换成BigDecimal.ZERO,否则保留原值。最后使用collect()方法将流转换成列表。
相关问题
stream集合中的对象的BigDecimal属性去重后从大到小排序,如果有null排在第一位
在Java Stream API中,你可以结合`filter()`, `distinct()`, `map()`和`sorted()`方法来实现这个需求。首先过滤掉null值,然后对非null的BigDecimal对象进行去重,再将它们转换回BigDecimal类型以便于比较大小,最后按照BigDecimal的自然顺序(从大到小)进行排序。
下面是一个示例代码片段:
```java
List<YourClass> list = ... // 假设YourClass有一个BigDecimal类型的字段bigDecimal
list.stream()
.filter(Objects::nonNull) // 过滤出非null元素
.distinct() // 去重
.map(YourClass::getBigDecimal) // 将YourClass对象转换为BigDecimal
.sorted(Comparator.reverseOrder()) // 降序排序
.collect(Collectors.toList()); // 收集到一个新的列表中
// 如果有null需要排在第一位,可以先添加一个null,然后再进行上述操作
List<BigDecimal> sortedList = new ArrayList<>();
if (list.contains(null)) {
sortedList.add(null);
}
sortedList.addAll(list.stream()...
```
在这个例子中,`getBigDecimal()`是你应该替换为获取YourClass中BigDecimal属性的实际方法名。注意`Comparator.reverseOrder()`用于创建一个降序排序的比较器。
阅读全文