1

こんにちは、配列をコピーしたいのですが、コピーが遅い「クローン」は使いたくありません。arraycopy と copyOf を試しましたが、うまくいきません。

for (int i = 0; i < arraySize; i++) {
            City[] tempCities = Arrays.copyOf(cities, cities.length) ;
            distance = 0;
            tempCities[i].setVisited();
}

しかし、これは私の元の配列(都市)を変更します。コピーする方法を知っていて、同じオブジェクトへの別のポインタを持っていない人はいますか

4

1 に答える 1

2

本当の問題は、参照を配列に格納することです。新しい配列のオブジェクトを元の配列のオブジェクトから独立させたい場合は、ディープ コピーを作成する必要があります。そのためにcities[i].clone()は、あなたの友達です。

パフォーマンスの問題に関しては、ループの反復ごとに配列をコピーすることが原因である可能性があります。これは非常に無駄です。1 つのコピーで十分です。

于 2013-03-12T19:34:47.780 に答える