0

有如下数据结构:

Vector<Cluster> clustersList;

在迭代过程中,我将新元素添加到clustersList.

Cluster c1 = getCluster();
clustersList.add(c1);

问题是在最后一次迭代中,第一个元素 ( ((0)(2))) 被最后一个元素 ( ) 替换(((0)(2))((1)(6))),即:

[((0)(2))]
[((0)(2)), ((1)(6))]
[((0)(2)), ((1)(6)), ((3)(7))]
[((0)(2)), ((1)(6)), ((3)(7)), ((5)(8))]
[(((0)(2))((1)(6))), ((1)(6)), ((3)(7)), ((5)(8)), (((0)(2))((1)(6)))]

结果必须是:

[((0)(2))]
[((0)(2)), ((1)(6))]
[((0)(2)), ((1)(6)), ((3)(7))]
[((0)(2)), ((1)(6)), ((3)(7)), ((5)(8))]
[((0)(2)), ((1)(6)), ((3)(7)), ((5)(8)), (((0)(2))((1)(6)))]

我怎样才能得到这样的结果?

PS我在类Cluster中不使用任何ID。

4

1 回答 1

1

第一个簇是某个对象(来自new Cluster()),其内容被最后一个元素的值覆盖。

如果类像 String 一样不可变,则不会有这个概念问题。解决方案(目前)是在某些地方添加 a new Cluster()

附言

使用List<Cluster> clusterList = new ArrayList<>();- 较新的类,快一点。

于 2013-03-26T14:02:50.503 回答