ArrayList
Java で を複製し、そのアイテムも複製するにはどうすればよいですか?
たとえば、次のようなものがあります:
ArrayList<Dog> dogs = getDogs();
ArrayList<Dog> clonedList = ....something to do with dogs....
clonedList
そして、内のオブジェクトは dogs リスト内のオブジェクトと同じではないと予想されます。
ベストアンサー1
個人的には、Dog にコンストラクターを追加します。
class Dog
{
public Dog()
{ ... } // Regular constructor
public Dog(Dog dog) {
// Copy all the fields of Dog.
}
}
次に、繰り返します (Varkhan の回答に示されているように)。
public static List<Dog> cloneList(List<Dog> dogList) {
List<Dog> clonedList = new ArrayList<Dog>(dogList.size());
for (Dog dog : dogList) {
clonedList.add(new Dog(dog));
}
return clonedList;
}
これの利点は、Java の壊れた Cloneable をいじる必要がないことです。また、Java コレクションをコピーする方法にも一致します。
もう 1 つのオプションは、独自の ICloneable インターフェイスを記述してそれを使用することです。この方法では、クローン作成用の汎用メソッドを記述できます。