我建了一个两层嵌套的 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 弄成了这个鸟样。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.