有以下数据结构:
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。
答案 0 :(得分:1)
第一个集群是某个对象(来自new Cluster()
),其内容被最后一个元素的值覆盖。
如果类像String一样不可变,那么你就不会遇到这个概念问题。解决方案(目前)将在某个地方添加new Cluster()
。
P.S。
使用List<Cluster> clusterList = new ArrayList<>();
- 更新的类,速度更快。