1

たとえば、ArrayList があります。

ArrayList<Animal> zoo = new ArrayList<Animal>();
// some code to add animals to zoo

old zooこれのコピーをに作成したいのですが、new zooremove/add... を使用してこの新しい動物園を処理できます (もちろん、古い動物園には影響しません)。古い動物園の各動物のクローンを作成する新しい動物園を作成します (動物オブジェクトを作成することを意味します)。だから、それはあまりにも遅いです。

別の方法があります。古い動物園の各動物の参照を作成し、新しい動物園にコピーします。したがって、新しい動物園は動物園の動物への参照を保持するだけです。したがって、削除/追加するたびに...動物オブジェクトへの参照を削除するだけです。古い動物園には影響せず、新しいオブジェクトを作成しません。

しかし、Javaでそれを行う方法がわかりません。教えて下さい。

ありがとう :)

4

2 に答える 2

6

これは Java では非常に単純です。

ArrayList<Animal> copy = new ArrayList<Animal>(zoo);

コンストラクターは、パラメーターとして指定したリストの浅いコピーArrayList<T>(Collection<? extends E> c)を実行します。これはまさに探しているセマンティクスです。

于 2012-04-12T13:17:01.767 に答える
5

単に試してください:

ArrayList<Animal> newZoo = new ArrayList<Animal>(oldZoo);
于 2012-04-12T13:17:01.893 に答える