Удалите десятичные точки с помощью Stream () вместо использования цикла for - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь удалить десятичные точки из элементов списка, не используя для l oop. Не могли бы вы указать декларативный подход?

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));
}

Ответы [ 2 ]

3 голосов
/ 16 апреля 2020

Вы можете использовать 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);
2 голосов
/ 16 апреля 2020

Вы можете сделать, как показано ниже,

Arrays.asList(new BigDecimal(1.2), new BigDecimal(2.2)).stream()
        .map(num->num.setScale(0, RoundingMode.FLOOR))
        .collect(Collectors.toList());
...