Java 正在寻找转换ArrayList的更好方法<;双倍>;将[]数组加倍
我一直在寻找将ArrayList转换为double[]数组的解决方案。在阅读了关于同一问题的几个问题后,我想出了一个解决办法。我现在就是这样工作的Java 正在寻找转换ArrayList的更好方法<;双倍>;将[]数组加倍,java,Java,我一直在寻找将ArrayList转换为double[]数组的解决方案。在阅读了关于同一问题的几个问题后,我想出了一个解决办法。我现在就是这样工作的 public static double[] listToArray(List<Double> arr){ double[] result = new double[arr.size()]; Iterator<Double> itr = arr.iterator(); int i = 0 ; whi
public static double[] listToArray(List<Double> arr){
double[] result = new double[arr.size()];
Iterator<Double> itr = arr.iterator();
int i = 0 ;
while(itr.hasNext()){
try{
result[i] = Double.parseDouble(itr.next().toString());
i++;
}catch(IndexOutOfBoundsException e){
System.out.println("OutOfBouds");
}
}
return result;
}
publicstaticdouble[]listToArray(List arr){
double[]结果=新的double[arr.size()];
迭代器itr=arr.Iterator();
int i=0;
while(itr.hasNext()){
试一试{
结果[i]=Double.parseDouble(itr.next().toString());
i++;
}catch(IndexOutOfBoundsException e){
System.out.println(“OutOfBouds”);
}
}
返回结果;
}
这是一种相当恶劣的方式。我知道有些API可以做我想做的事情。但在这种情况下,我会给我的项目带来额外的复杂性,这不是我想要看到的。有谁能给我一个更好的解决方案吗
public static double[] listToArray(List<Double> arr){
double[] result = new double[arr.size()];
int i = 0;
for(Double d : arr) {
result[i++] = d.doubleValue();
}
return result;
}
double[]结果=新的double[arr.size()];
int i=0;
用于(双d:arr){
结果[i++]=d.doubleValue();
}
返回结果;
}
好吧,有:
.toArray()
但这将得到一个双对象数组
尝试:
arraylistobjlist;
double[]primList=新的double[objList.size()];
对于(int i=0;i
下面是如何做的
publicstaticdouble[]toPrimitive(double[]array){
if(数组==null){
返回null;
}else if(array.length==0){
返回空的双数组;
}
最终双精度[]结果=新双精度[array.length];
for(int i=0;i
双[]测试(最终列表源列表){
if(sourcelist==null){
返回null;
}
double[]数组=新的double[sourcelist.size()];
int i=0;
for(双值:sourcelist){
如果(值==null){
数组[i++]=0D;//或其他一些空表示形式
}否则{
数组[i++]=value.doubleValue();
}
}
返回数组;
}
您没有使用ArrayList#toArray()
的任何原因?这将产生一个双(而不是双)数组。它给出了Double[],而不是Double[],我知道,这只是第一步。确切地说,我花了一些时间尝试这种方法,但我最终发现Double[]数组不能转换为Double[]这样做很麻烦,因为没有标准的java库或语言功能来实现这一点。但是,使用上述代码非常简单。
ArrayList<Double> objList;
double[] primList = new double[objList.size()];
for (int i =0; i < objList.size(); ++i)
primList[i] = objList.get(i);
public static double[] toPrimitive(Double[] array) {
if (array == null) {
return null;
} else if (array.length == 0) {
return EMPTY_DOUBLE_ARRAY;
}
final double[] result = new double[array.length];
for (int i = 0; i < array.length; i++) {
result[i] = array[i].doubleValue();
}
return result;
}
double[] test(final List<Double> sourcelist) {
if (sourcelist==null) {
return null;
}
double[] array = new double[sourcelist.size()];
int i = 0;
for (Double value : sourcelist) {
if (value == null) {
array[i++] = 0D; // or some other null representation
} else {
array[i++] = value.doubleValue();
}
}
return array;
}