Java toArray()方法:基元结果类型
我正在努力做到以下几点:Java toArray()方法:基元结果类型,java,arrays,generics,Java,Arrays,Generics,我正在努力做到以下几点: double[][] ret = new double[res.size()][columnSize]; for(int i = 0; i < res.size(); i++){ ret[i] = res.get(i).toArray(new double[columnSize]); } double[]ret=new double[res.size()][columnSize]; 对于(int i=0;i
double[][] ret = new double[res.size()][columnSize];
for(int i = 0; i < res.size(); i++){
ret[i] = res.get(i).toArray(new double[columnSize]);
}
double[]ret=new double[res.size()][columnSize];
对于(int i=0;i
其中res声明为列表
。上述方法不起作用,因为toArray()方法需要一个参数化数组来推断结果类型,而该数组不能是基元
现在,我可以将我的方法的返回类型更改为Double[][
,但稍后我会使用来自不同API的其他函数,这些函数需要Double[][][
9primitives)。这意味着会有很多向上的转变,不是吗
有什么解决方案、建议吗 不能在集合中保留基元,需要将集合转换为基元类型数组,如下所示:
double[] toArray(Collection<Double> collection) {
double[] arr = new double[collection.size()];
int i = 0;
for (Double d : collection) {
arr[i++] = d;
}
return arr;
}
double[]到阵列(集合){
double[]arr=新的double[collection.size()];
int i=0;
用于(双d:收集){
arr[i++]=d;
}
返回arr;
}
With:完成此操作。用于二维阵列
private static int[][] convertListArray(ArrayList<Integer[]> al) {
int[][] ret = new int[al.size()][];
for (int i=0; i < al.size(); i++) {
Integer[] row = al.get(i);
ret[i] = new int[row.length];
for (int j = 0; j < row.length; j++) {
ret[i][j] = row[j];
}
}
return ret;
}
private static int[]convertListArray(ArrayList al){
int[][]ret=新的int[al.size();
对于(int i=0;i
这是一个非常简单的解决方案。。。但没有这么好:)不幸的是,没有更好的解决方案。哇,令人难以置信的是Java仍然没有数组自动拆箱。顺便说一句,这个答案是针对单一维度的。问题是2D数组,因此需要嵌套for循环。为这么简单的事情疯狂。哇,这真的很有用,伙计!简单地看一下,乍一看,它就像一个库,弥补了java的错误和缺少的实现。顺便说一句,你可能知道类似的事情吗?我在吃番石榴。如果你对番石榴提供的所有东西都感兴趣,那么最好的开始是。是的,看起来不错。你认为这是最复杂的套房吗?嗯。我不知道你是什么意思,但不使用番石榴就像把一只手绑在背后一样。我想知道是否有类似的软件包,也许是针对Java的其他问题,我应该知道