有没有办法将整个 Big Decimals 列表转换为 Long 值列表

Is there a way to typecast a whole list of Big Decimals to list of Long values

如果我有 ListBigDecimal 个对象,是否可以将整个列表类型转换为 ListLong 个值,而不必遍历每个BigDecimal 对象?

您将需要以一种或另一种方式进行迭代。如果要 "hide" 迭代,可以使用流:

List<Long> longs = bigs.stream().map(BigDecimal::longValue).collect(Collectors.toList());

但是后台还是会有迭代

您提到您不想迭代两次 - 您可以保存多头流供以后使用:

LongStream longs = bigs.stream().mapToLong(BigDecimal::longValue);

并在收集结果之前对该流应用其他操作。

没有Java 8个流,你可以使用番石榴变换:

private List<Long> convertToLongList(List<BigDecimal> bigDecimalList) {
    return Lists.transform(bigDecimalList, new Function<BigDecimal, Long>() {
        public Long apply(BigDecimal bigDecimal) {
            return bigDecimal.longValue();
        }
    });
}