Java 如何在一行中将字符串数组转换为双数组

Java 如何在一行中将字符串数组转换为双数组,java,Java,我有一个字符串数组,如下所示: String[] guaranteedOutput = Arrays.copyOf(values, values.length, String[].class); 所有字符串值都是数字。数据应转换为Double[] 问题 Java中是否有一行解决方案来实现这一点,或者我们需要循环并将每个值转换为双精度值 创建一个使用循环实现它的方法,然后调用您的方法,您将得到一个单行解决方案 Java API中没有内置的方法可以做到这一点。我认为您必须循环并将每个值转换为双精度

我有一个字符串数组,如下所示:

String[] guaranteedOutput = Arrays.copyOf(values, values.length,
String[].class);
所有字符串值都是数字。数据应转换为
Double[]

问题

Java中是否有一行解决方案来实现这一点,或者我们需要循环并将每个值转换为双精度值

创建一个使用循环实现它的方法,然后调用您的方法,您将得到一个单行解决方案


Java API中没有内置的方法可以做到这一点。

我认为您必须循环并将每个值转换为双精度值。以下是我在另一个问题中的做法:

for(getData : getDataArray){
 double getTotal;
 getTotal = getTotal + Double.parseDouble(getData);
}
return getTotal;

想法是一样的。将其转化为一种方法,传递参数,你就成功了。

循环有什么问题

double[] parsed = new double[values.length];
for (int i = 0; i<values.length; i++) parsed[i] = Double.valueOf(values[i]);
double[]parsed=新的double[values.length];
对于(int i=0;i
编辑


请记住,这在JavaSDK中是不存在的!我使用的是

您需要函数式编程中的映射操作,不幸的是Java没有提供

double[] nums = new double[guaranteedOutput.length];
for (int i = 0; i < nums.length; i++) {
    nums[i] = Double.parseDouble(guaranteedOutput[i]);
}
double[]nums=新的双精度[guarantedOutput.length];
对于(int i=0;i
在一行中:p

Double[] d=new ArrayList<Double>() {{for (String tempLongString : tempLongStrings) add(new Double(tempLongString));}}.toArray(new Double[tempLongStrings.length]);
Double[]d=new ArrayList(){{for(String-tempLongString:tempLongStrings)add(new-Double(tempLongString));}}.toArray(new-Double[tempLongStrings.length]);
Java 8允许这样做:

double[]doubleValues=Arrays.stream(保证输出)
.mapToDouble(Double::parseDouble)
.toArray();
双冒号用作方法引用

在使用代码之前,不要忘记导入java.util.array;

UPD:如果要将数组强制转换为Double[],而不是Double[],可以使用以下代码:

Double[]doubleValues=Arrays.stream(保证输出)
.map(Double::valueOf)
.toArray(双[]::新);

这将在一行中将字符串数组转换为双精度数组

String[] stringArray = {"1.3", "4.6", "3.2"};
double[] doubleArray = Arrays.stream(stringArray).mapToDouble(Double::parseDouble).toArray();

为什么不
double[]
?速度更快。循环并转换它们中的每一个,这是您所能做的。除了您在for循环中缺少一个类型之外;如果他想得到一个数组(与他可以附加到的列表相反),您实际上需要知道整数索引。我没有说明我提供的代码是我编写的Beanshell脚本中的一个片段,因此缺少数据类型。您缺少分号,格式设置使其难以读取;修复了这个问题。值得注意的是,这不是核心java的一部分,而是
org的一部分。apache.commons.collections
-这是一个很好的答案。(我想+1你,但我今天没有投票了)哈哈!谢谢你的编辑!出于这个目的,我有点喜欢commons collections!这应该与
map
以及
mapToDouble
一起使用(速度可能会更快一些)
String[] stringArray = {"1.3", "4.6", "3.2"};
double[] doubleArray = Arrays.stream(stringArray).mapToDouble(Double::parseDouble).toArray();