java - 使用 Stream() 删除小数点,而不是使用 for 循环
问题描述
我正在尝试在不使用 for 循环的情况下从列表元素中删除小数点。您能否指出一种声明性方法?
List<BigDecimal> numbers = Arrays.asList(new BigDecimal(1.2), new BigDecimal(2.2));
for (int i = 0; i < numbers.size(); i++) {
BigDecimal number = numbers.get(i);
numbers.set(i, number.setScale(0, RoundingMode.FLOOR));
}
解决方案
您可以使用map
:
List<BigDecimal> numbers = Stream.of(new BigDecimal(1.2), new BigDecimal(2.2))
.map(n -> n.setScale(0, RoundingMode.FLOOR))
.collect(Collectors.toList());
此外,为什么不简单地:
Arrays.asList(new BigDecimal(1.2).setScale(0, RoundingMode.FLOOR, new BigDecimal(2.2).setScale(0, RoundingMode.FLOOR);
推荐阅读
- python - 使用 Twisted python 是否有一种机制可以找到类似于 socket.open 的空闲端口?
- memory-management - 如何在 Julia 中表达引用和值
- python-3.x - 在 Windows 中使用 Python 在后台运行应用程序
- javascript - 使用物化框架时的空白页
- git - 如何停止每次都获得额外的合并提交
- r - 计算置换相关性:如何获得平均 r 值
- java - while循环行数增加
- python - 美丽的汤:无法从中获取文本(价格)
- c# - 迁移成功,但 IIS 不这么认为?
- javascript - 如何在 Nunjucks 中进行不区分大小写的字符串比较