遍历List<BigDecimal>集合元素,每个元素除以10000,然后再赋值给原元素,用stream流实现
时间: 2024-03-11 18:47:39 浏览: 108
可以使用Java 8中的Stream API实现这个需求。具体的代码如下所示:
```
List<BigDecimal> list = Arrays.asList(new BigDecimal(10000), new BigDecimal(20000), new BigDecimal(30000));
list = list.stream().map(e -> e.divide(new BigDecimal(10000))).collect(Collectors.toList());
System.out.println(list);
```
上述代码中,我们首先创建了一个包含3个BigDecimal类型元素的List集合。然后,我们使用stream()方法将其转换成Stream流对象。接着,我们调用map()方法,将每个元素除以10000。最后,我们使用collect()方法将Stream流转换成List集合,并将其赋值给原来的变量list。最终,我们输出了处理后的List集合。
相关问题
List<BigDecimal> 转 List<Integer>
将 `List<BigDecimal>` 类型的数据转换为 `List<Integer>` 类型通常需要通过取整或者其它数据处理方式实现,因为 BigDecimal 和 Integer 存储的是不同的数值类型。以下是一个简单的示例,假设我们想要丢弃小数部分并转换:
```java
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
// 原始的大规模BigDecimal列表
List<BigDecimal> bigDecimalList = ...;
// 创建一个新的Integer列表来存储结果
List<Integer> integerList = new ArrayList<>();
for (BigDecimal bd : bigDecimalList) {
if (!bd.compareTo(BigDecimal.ZERO) == 0) { // 如果不是零,则转换
int intValue = bd.setScale(0, RoundingMode.UP).intValue(); // 取整并向上舍入
integerList.add(intValue);
}
}
System.out.println(integerList); // 输出转换后的整数列表
}
}
```
在这个例子中,`setScale()` 方法用于设置小数点后的位数,并指定舍入模式。如果原值为零或者小于零,转换后的结果可能是负数。
java List <BigDecimal>转List<Object>
可以使用 Java 8 的 Stream API 将 `List<BigDecimal>` 转换为 `List<Object>`。例如:
```java
List<BigDecimal> bigDecimalList = Arrays.asList(BigDecimal.valueOf(1), BigDecimal.valueOf(2), BigDecimal.valueOf(3));
List<Object> objectList = bigDecimalList.stream().map(Object::valueOf).collect(Collectors.toList());
```
这里的 `map(Object::valueOf)` 将每个 `BigDecimal` 对象转换为对应的 `Object` 对象,最后使用 `collect(Collectors.toList())` 将转换后的结果收集为一个 `List`。
阅读全文