有没有办法将整个 Big Decimals 列表转换为 Long 值列表
Is there a way to typecast a whole list of Big Decimals to list of Long values
如果我有 List
个 BigDecimal
个对象,是否可以将整个列表类型转换为 List
个 Long
个值,而不必遍历每个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();
}
});
}
如果我有 List
个 BigDecimal
个对象,是否可以将整个列表类型转换为 List
个 Long
个值,而不必遍历每个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();
}
});
}