你这里字段 SourceDataPosition 是一个 list ,里面有三个元素(引用),因为 nCopies 的特殊性,这三个引用都指向同一个 list 也就是说 this.SourceDataPosition.get(FirstDimensionIndex)都是返回了同一个 list 。你的 SetSourcePosition 方法只改变了第二维元素的引用,所以导致了你那样的结果。
如果你在第一个 for 循环之后加上: SourceDataPosition.set(FirstDimensionIndex,new ArrayList<Double>(Collections.nCopies(3,Double.valueOf(0)))); 这个时候你也改变了第一维引用指向的对象,就可以得到你期望的结果。