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私はクラスクラスター内でIDを使用していません。

4

1 に答える 1

1

最初のクラスターはnew Cluster()、コンテンツが最後の要素の値で上書きされる(からの)オブジェクトです。

クラスがStringのように不変である場合、この概念上の問題は発生しません。(今のところ)解決策は、ある場所にaを追加することnew Cluster()です。

PS

使用List<Cluster> clusterList = new ArrayList<>();-新しいクラス、少し高速。

于 2013-03-26T14:02:50.503 に答える