ArrayList を複製し、その内容も複製するにはどうすればよいでしょうか? 質問する

ArrayList を複製し、その内容も複製するにはどうすればよいでしょうか? 質問する

ArrayListJava で を複製し、そのアイテムも複製するにはどうすればよいですか?

たとえば、次のようなものがあります:

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 インターフェイスを記述してそれを使用することです。この方法では、クローン作成用の汎用メソッドを記述できます。

おすすめ記事