调试我的代码,所有变量都按预期显示:
git clean -xf
' theEntry'每个新条目都是正确填充的双打数组。当每个新条目添加到' list'时,将使用新的double值修改第一个列表条目,并添加null条目。结果是第一个条目是一个双精度数组(最后添加),后跟一长串空值。 有任何想法吗?
答案 0 :(得分:2)
似乎是共享数组对象的情况。一个例子:
List<double[]> list = new ArrayList<>();
double[] a = new double[] { 1.0, 2.0 };
double[] b = new double[] { 3.0, 4.0 };
// Three new's: three objects.
list.add(a);
list.add(a);
list.add(b);
a[0] = 5.0;
list.get(0)[1] = 6.0;
// list: [ [5.0, 6.0]==a, [5.0, 6.0]==a [3.0, 4.0]==b ]
一个解决方案:
public void addEntry(Double[] theEntry) {
list.add(Arrays.copyOf(theEntry, theEntry.length));
}