我建了一个两层嵌套的 ArrayList,给他赋值的过程中出了奇怪的现象,就是使用.get()获得特定的第一维元素之后,再继续.set 第二维元素时就会使得所有的元素被赋予了同样的数值,具体代码如下:
private List<List<Double>> SourceDataPosition = new ArrayList<List<Double>>(Collections.nCopies(3,new ArrayList<Double>(Collections.nCopies(3,Double.valueOf(0)))));
public boolean SetSourcePosition (double[][] InputSourcePosition) {
for ( int FirstDimensionIndex = 0 ; FirstDimensionIndex < InputSourcePosition.length; FirstDimensionIndex ++){
for ( int SecondDimensionIndex = 0 ; SecondDimensionIndex < InputSourcePosition[FirstDimensionIndex].length; SecondDimensionIndex ++){
this.SourceDataPosition.get(FirstDimensionIndex).set(SecondDimensionIndex, InputSourcePosition[FirstDimensionIndex][SecondDimensionIndex]);
}
}
return true;
}
比如说,我定义
double[][] InputSourcePosition = {{20.0,50,80},{30.0,60,90},{40.0,70,0}} ;
理论上应该生成同样的二维 ArrayList ,但是输出结果却是 {{40.0,70,0},{40.0,70,0},{40.0,70,0}}。
难道说 ArrayList.get 是获得了二维数组的第一列元素?而不是第一个一维对象么?我不知道自己的意思表达清楚没有。抱歉排版啊,不知道怎么 V2EX 弄成了这个鸟样。