- ベストアンサー
JAVA ArrayListからArrayListへのコピー
java で、ArrayListからArrayListへコピーはできるのでしょうか? clone()というメソッドがありましたが、よくわからず、コピーできてないようなので伺いました。 ベーシックではできるようですが、JAVAでもできるのでしょうか? どなたか教えていただけませんでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
ArrayList li = new ArrayList(list); でよいでのでは?
その他の回答 (3)
- ansariga10
- ベストアンサー率47% (10/21)
まずあなたがなぜArrayListをコピーする目的を明記するべきです。 そうでなければ、浅いコピー(シャローコピー)なのか深いコピー(ディープコピー)なのかわからないので、非常に答えにくいわけです。 どちらの場合でも、clone()で解決できることは間違い有りませんよ。 ただ、clone()を使うためには、Object#clone()のオーバーライドとCloneableインターフェースの実装が必要になります。 あなたがその辺のことまで分かっているのかどうかさえも、われわれには分からないのです。なぜならあなたはご自分の書いたコードさえ提示していないのですから。 ということで、目的とあなた自身が書いたソースコードをお知らせください。
お礼
ご回答及び、補足要求ありがとうございます。 あなた様のおっしゃるとおり、ArrayListのコピーの目的も明記した方が、状況がわかりやすかったかと思っております。大変失礼いたしました。 私自身、シャローコピーとディープコピーの理解があいまいでした。 この件に関しましては、ArrayLits li =new ArrayList(list); で解決いたしました。 併し、シャローコピーとディープコピー、cloneメソッド等の理解があいまいですので、勉強したいと思っております。 ご意見本当にありがとうございました。
Array#cloneは、インスタンスのコピーです。 既にある別のインスタンスにListの内容を「入れ替える」のは、リストをループでまわして入れ替えるのが一番簡単じゃないでしょうか。 貴方が考えている「コピー」の定義をもう少し分かりやすく定義して頂ければ、もっと明確なアドバイスを出来るかもしれません。
お礼
texjoyさん、いつもご回答ありがとうございます。 少々プログラムに手をつけていましたので、お礼が遅くなってしまいました。大変失礼いたしました。 ArrayList li =new ArrayList(list); のような記述でできました。 少しずついろいろなことを覚えて、使いこなせれば!いいですね。 ありがとうございました。
ArrayList#cloneを使ってインスタンスのコピーはできます。 ただし、ディープコピーではなくシャローコピーになりますが。 何を持ってコピーできていないと思ったのでしょうか?
補足
えっと、今の状態は ArrayList list に数字の12345678910が入っています。 これを、ArrayList li にコピーしたかったのですが、今一度clone()メソッドの意味がわかってなかったようです。 list.clone();と記述すると、listからliへのコピーにはならないですし・・・。 あの、お手数ですがお願いがあります。 ArrayList list をArrayList li にコピーして、liをSystem.out.println();する記述を打っていただけませんでしょうか?
お礼
ご回答ありがとうございます。おかげさまで、あなた様の記述で解決いたしました。 本当に助かりました。 今後も何卒アドバイスを宜しくお願いいたします。 ありがとうございました。