如何使用Java8流将字符串数组转换为大整数数组

如何使用Java8流将字符串数组转换为大整数数组,java,java-8,java-stream,biginteger,Java,Java 8,Java Stream,Biginteger,我有一个字符串数组,我想用Java8流将它转换成BigInteger数组 String[] output = bigSorting(new String[]{"31415926535897932384626433832795", "1", "4900146572543628830293235422623540449026979", "10", "57500297590012603652986133599394871645776460", "5", "49

我有一个字符串数组,我想用Java8流将它转换成BigInteger数组

String[] output = bigSorting(new String[]{"31415926535897932384626433832795", "1", "4900146572543628830293235422623540449026979", "10", "57500297590012603652986133599394871645776460", "5", 
                    "497010206818067722087306230802257700034825862515267073569769100385728461314", "57500297590012603652986133599394871645776460497010206818067722087306230802257700034825862515267073569769100385728461314497010206818067722087306230802257700034825862515267073569769100385728461314497010206818067722087306230802257700034825862515267073569769100385728461314497010206818067722087306230802257700034825862515267073569769100385728461314497010206818067722087306230802257700034825862515267073569769100385728461314"});
        Object[] unsortedBigIntegerArr = convertFromStringArrayToBigIntegerArray(output);
这是我尝试过的,但是我不能得到BigInteger数组,但是我可以得到对象数组

private static Object[] convertFromStringArrayToBigIntegerArray(String[] unsorted) {
        return Arrays.stream(unsorted).map(BigSorting2::convertFromStringToBigInteger).toArray();
    }

    private static BigInteger convertFromStringToBigInteger(String unsorted) {
        return new BigInteger(unsorted);
    }
是否有任何方法可以完全使用Java 8 streams完成此操作。

简单到:

String[] output = bigSorting(new String[]{"31415926535897932384626433832795", "1", "4900146572543628830293235422623540449026979", "10", "57500297590012603652986133599394871645776460", "5", 
                    "497010206818067722087306230802257700034825862515267073569769100385728461314", "57500297590012603652986133599394871645776460497010206818067722087306230802257700034825862515267073569769100385728461314497010206818067722087306230802257700034825862515267073569769100385728461314497010206818067722087306230802257700034825862515267073569769100385728461314497010206818067722087306230802257700034825862515267073569769100385728461314497010206818067722087306230802257700034825862515267073569769100385728461314"});
        Object[] unsortedBigIntegerArr = convertFromStringArrayToBigIntegerArray(output);
return Arrays.stream(unsorted)
             .map(BigSorting2::convertFromStringToBigInteger)
             .toArray(BigInteger[]::new);
简单到:

return Arrays.stream(unsorted)
             .map(BigSorting2::convertFromStringToBigInteger)
             .toArray(BigInteger[]::new);

非常简单的事情,比如:

public void test(String[] args) {
    String[] output = new String[]{"31415926535897932384626433832795", "1", "4900146572543628830293235422623540449026979", "10", "57500297590012603652986133599394871645776460", "5",
            "497010206818067722087306230802257700034825862515267073569769100385728461314", "57500297590012603652986133599394871645776460497010206818067722087306230802257700034825862515267073569769100385728461314497010206818067722087306230802257700034825862515267073569769100385728461314497010206818067722087306230802257700034825862515267073569769100385728461314497010206818067722087306230802257700034825862515267073569769100385728461314497010206818067722087306230802257700034825862515267073569769100385728461314"};
    Object[] bigIntegers = Arrays.stream(output)
            .map(BigInteger::new)
            .toArray();
    System.out.println(Arrays.toString(bigIntegers));
}

非常简单的事情,比如:

public void test(String[] args) {
    String[] output = new String[]{"31415926535897932384626433832795", "1", "4900146572543628830293235422623540449026979", "10", "57500297590012603652986133599394871645776460", "5",
            "497010206818067722087306230802257700034825862515267073569769100385728461314", "57500297590012603652986133599394871645776460497010206818067722087306230802257700034825862515267073569769100385728461314497010206818067722087306230802257700034825862515267073569769100385728461314497010206818067722087306230802257700034825862515267073569769100385728461314497010206818067722087306230802257700034825862515267073569769100385728461314497010206818067722087306230802257700034825862515267073569769100385728461314"};
    Object[] bigIntegers = Arrays.stream(output)
            .map(BigInteger::new)
            .toArray();
    System.out.println(Arrays.toString(bigIntegers));
}

天哪,这太酷了,谢谢你。你能给我建议一下Java8流的最佳学习路径吗。@pjj我从Oracle教程和官方文档开始……你甚至可以做
.map(BigInteger::new)
@pjj我从堆栈溢出问题和答案中学到了很多东西。例如,搜索[java stream]标记。@pjj老实说,大多数不熟悉java类型系统的人都希望您尝试
Arrays.stream(未排序).map(BigSorting2::ConvertFromStringToBiginger).toArray()
生成
,但显然这是不可能的。由于java的限制,必须显式指定数组构造函数引用以检索所需类型的数组,因此为
.toArray(BigInteger[]::new)天哪,这太酷了,谢谢你。你能给我建议一下Java8流的最佳学习路径吗。@pjj我从Oracle教程和官方文档开始……你甚至可以做
.map(BigInteger::new)
@pjj我从堆栈溢出问题和答案中学到了很多东西。例如,搜索[java stream]标记。@pjj老实说,大多数不熟悉java类型系统的人都希望您尝试
Arrays.stream(未排序).map(BigSorting2::ConvertFromStringToBiginger).toArray()
生成
,但显然这是不可能的。由于java的限制,必须显式指定数组构造函数引用以检索所需类型的数组,因此为
.toArray(BigInteger[]::new)我想你误解了我的问题,请看我的问题或@Eugene-answer,谢谢你的回答。我理解这个问题的原因是,是否有可能从
字符串[]
中获得
biginger[]
而不是
对象[]
。我想你误解了我的问题,请查看我的问题或@Eugene answer,谢谢您的回答。根据我的理解,问题是是否可以从
字符串[]
获取
BigInteger[]
而不是
对象[]