使用流在Java中将长数组转换为BigInteger数组

问题描述 投票:-1回答:1

我尝试了以下代码片段:

BigInteger[] biCoords = (BigInteger[]) LongStream.of(coords).mapToObj((long n) -> {
            return BigInteger.valueOf(n);
        }).toArray();

产量

原因:java.lang.ClassCastException:[Ljava.lang.Object;不可能是强制转换为[Ljava.math.BigInteger;

是否可以使用Java中的流将long类型的数组转换为Java中的BigIntegers数组?

java types functional-programming stream
1个回答
1
投票

toArray返回Object[]。您需要使用带有生成器的重载变体:

BigInteger[] biCoords =
    LongStream.of(coords)
              .mapToObj((long n) -> {
                         return BigInteger.valueOf(n);
                        }).toArray(BigInteger::new);

请注意,您可能会失去一些健壮性,并使用方法引用清理代码:

BigInteger[] biCoords =
    LongStream.of(coords).mapToObj(BigInteger::valueOf).toArray(BigInteger::new);
© www.soinside.com 2019 - 2024. All rights reserved.