有没有办法将整个Big Decimal列表强制转换为Long值列表

时间:2015-10-01 17:10:10

标签: java long-integer bigdecimal

如果我有ListBigDecimal个对象,是否可以将整个列表强制转换为List Long个值,而不必遍历每个BigDecimal embed 1}}对象?

2 个答案:

答案 0 :(得分:5)

您需要以某种方式进行迭代。如果你想"隐藏"迭代,您可以使用流:

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

但是后台仍然会有一个迭代。

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

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

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

答案 1 :(得分:0)

如果没有Java 8流,则可以使用guava转换:

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