2009-10-07 12 views
5

arraylistの内容を別のオブジェクトにコピーしようとしています。私は、次の方法Javaコピーarrylistオブジェクト

newArrList.addAll(oldArrList); 

newArrList = new ArrayList(oldArrList); 

に新しいArrayListオブジェクトを初期化しようとした。しかし、私は、配列リストのいずれかに変更を加えるたびに、値は、他のArrayListに変更されます。

私はこれを避ける方法を教えていただけますか?

ありがとうございました。

答えて

15

ArrayListには、オブジェクト自体ではなく、オブジェクトへの参照のみが含まれます。あるリストの内容を別のリストにコピーすると、その参照がコピーされます。つまり、2つのリストは同じオブジェクトを参照します。

リストの1つに変更を加えると、実際にはというオブジェクトの1つに変更が加えられていると考えられます。リストではとなります。それは期待される。

あなたはリストが独立したオブジェクトへの参照を持っているしたい場合は、1つのリストから別のものにそれらをコピーして、あなたは、オブジェクトのディープコピーを作成する必要があります。その作業の仕方は、コピーしているオブジェクトによって異なります。

+0

こんにちは、「ディープコピー」は、オブジェクト/コンテンツを1つずつコピーする必要があることを意味しますか? –

+0

@ user1282407:はい。既存のオブジェクトへの参照を保持するのではなく、同じ内容の新しいオブジェクトを作成します(変更できないオブジェクトは例外ではありません)。 –

+0

ありがとう!コンテンツをコピーするより簡単な方法はないと思います。 。 –

関連する問題