Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Stream()而不是for循环删除小数点_Java_Lambda_Java 8_Functional Programming_Java Stream - Fatal编程技术网

Java 使用Stream()而不是for循环删除小数点

Java 使用Stream()而不是for循环删除小数点,java,lambda,java-8,functional-programming,java-stream,Java,Lambda,Java 8,Functional Programming,Java Stream,我试图在不使用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.setSc

我试图在不使用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));
}
List number=Arrays.asList(新的BigDecimal(1.2),新的BigDecimal(2.2));
对于(int i=0;i
您可以使用
地图

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), new BigDecimal(2.2)).stream()
        .map(num->num.setScale(0, RoundingMode.FLOOR))
        .collect(Collectors.toList());

它和我建议的一样,而不是你的,创建了一个不必要的中间列表。无论如何,你的是更好的
numbers.replaceAll(number->number.setScale(0,RoundingMode.FLOOR))@Holger将其作为答案发布。这是一个完美的答案。这个答案其实很好,谢谢@Holger
Arrays.asList(new BigDecimal(1.2), new BigDecimal(2.2)).stream()
        .map(num->num.setScale(0, RoundingMode.FLOOR))
        .collect(Collectors.toList());