ArrayList add()修改第一个条目,添加空条目

时间:2016-02-27 20:36:10

标签: java arraylist

调试我的代码,所有变量都按预期显示:

git clean -xf

' theEntry'每个新条目都是正确填充的双打数组。当每个新条目添加到' list'时,将使用新的double值修改第一个列表条目,并添加null条目。结果是第一个条目是一个双精度数组(最后添加),后跟一长串空值。 有任何想法吗?

1 个答案:

答案 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));
}