将类的新实例添加到Vector

时间:2013-03-26 13:55:14

标签: java vector

有以下数据结构:

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)))]

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

P.S。我不在Cluster类中使用任何ID。

1 个答案:

答案 0 :(得分:1)

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

如果类像String一样不可变,那么你就不会遇到这个概念问题。解决方案(目前)将在某个地方添加new Cluster()

P.S。

使用List<Cluster> clusterList = new ArrayList<>(); - 更新的类,速度更快。