• ベストアンサー

JAVA  ArrayListからArrayListへのコピー

java で、ArrayListからArrayListへコピーはできるのでしょうか? clone()というメソッドがありましたが、よくわからず、コピーできてないようなので伺いました。 ベーシックではできるようですが、JAVAでもできるのでしょうか? どなたか教えていただけませんでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#160244
noname#160244
回答No.3

ArrayList li = new ArrayList(list); でよいでのでは?

aabbccddzz
質問者

お礼

ご回答ありがとうございます。おかげさまで、あなた様の記述で解決いたしました。 本当に助かりました。 今後も何卒アドバイスを宜しくお願いいたします。 ありがとうございました。

その他の回答 (3)

回答No.4

まずあなたがなぜArrayListをコピーする目的を明記するべきです。 そうでなければ、浅いコピー(シャローコピー)なのか深いコピー(ディープコピー)なのかわからないので、非常に答えにくいわけです。 どちらの場合でも、clone()で解決できることは間違い有りませんよ。 ただ、clone()を使うためには、Object#clone()のオーバーライドとCloneableインターフェースの実装が必要になります。 あなたがその辺のことまで分かっているのかどうかさえも、われわれには分からないのです。なぜならあなたはご自分の書いたコードさえ提示していないのですから。 ということで、目的とあなた自身が書いたソースコードをお知らせください。

aabbccddzz
質問者

お礼

ご回答及び、補足要求ありがとうございます。 あなた様のおっしゃるとおり、ArrayListのコピーの目的も明記した方が、状況がわかりやすかったかと思っております。大変失礼いたしました。 私自身、シャローコピーとディープコピーの理解があいまいでした。 この件に関しましては、ArrayLits li =new ArrayList(list); で解決いたしました。 併し、シャローコピーとディープコピー、cloneメソッド等の理解があいまいですので、勉強したいと思っております。 ご意見本当にありがとうございました。

noname#49428
noname#49428
回答No.2

Array#cloneは、インスタンスのコピーです。 既にある別のインスタンスにListの内容を「入れ替える」のは、リストをループでまわして入れ替えるのが一番簡単じゃないでしょうか。 貴方が考えている「コピー」の定義をもう少し分かりやすく定義して頂ければ、もっと明確なアドバイスを出来るかもしれません。

aabbccddzz
質問者

お礼

texjoyさん、いつもご回答ありがとうございます。 少々プログラムに手をつけていましたので、お礼が遅くなってしまいました。大変失礼いたしました。 ArrayList li =new ArrayList(list); のような記述でできました。 少しずついろいろなことを覚えて、使いこなせれば!いいですね。 ありがとうございました。

noname#49428
noname#49428
回答No.1

ArrayList#cloneを使ってインスタンスのコピーはできます。 ただし、ディープコピーではなくシャローコピーになりますが。 何を持ってコピーできていないと思ったのでしょうか?

aabbccddzz
質問者

補足

えっと、今の状態は ArrayList list に数字の12345678910が入っています。 これを、ArrayList li にコピーしたかったのですが、今一度clone()メソッドの意味がわかってなかったようです。 list.clone();と記述すると、listからliへのコピーにはならないですし・・・。 あの、お手数ですがお願いがあります。 ArrayList list をArrayList li にコピーして、liをSystem.out.println();する記述を打っていただけませんでしょうか?

関連するQ&A

専門家に質問してみよう