如何使用Java8流将字符串数组转换为大整数数组
我有一个字符串数组,我想用Java8流将它转换成BigInteger数组如何使用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
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)回答中的code>我想你误解了我的问题,请看我的问题或@Eugene-answer,谢谢你的回答。我理解这个问题的原因是,是否有可能从字符串[]
中获得biginger[]
而不是对象[]
。我想你误解了我的问题,请查看我的问题或@Eugene answer,谢谢您的回答。根据我的理解,问题是是否可以从字符串[]
获取BigInteger[]
而不是对象[]
。