プロが教えるわが家の防犯対策術!

java で、ArrayListからArrayListへコピーはできるのでしょうか?
clone()というメソッドがありましたが、よくわからず、コピーできてないようなので伺いました。

ベーシックではできるようですが、JAVAでもできるのでしょうか?
どなたか教えていただけませんでしょうか?

A 回答 (4件)

ArrayList#cloneを使ってインスタンスのコピーはできます。


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

この回答への補足

えっと、今の状態は ArrayList list に数字の12345678910が入っています。
これを、ArrayList li にコピーしたかったのですが、今一度clone()メソッドの意味がわかってなかったようです。

list.clone();と記述すると、listからliへのコピーにはならないですし・・・。
あの、お手数ですがお願いがあります。
ArrayList list をArrayList li にコピーして、liをSystem.out.println();する記述を打っていただけませんでしょうか?

補足日時:2007/12/26 16:19
    • good
    • 0

Array#cloneは、インスタンスのコピーです。


既にある別のインスタンスにListの内容を「入れ替える」のは、リストをループでまわして入れ替えるのが一番簡単じゃないでしょうか。

貴方が考えている「コピー」の定義をもう少し分かりやすく定義して頂ければ、もっと明確なアドバイスを出来るかもしれません。
    • good
    • 1
この回答へのお礼

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

少しずついろいろなことを覚えて、使いこなせれば!いいですね。

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

お礼日時:2007/12/27 23:08

ArrayList li = new ArrayList(list);


でよいでのでは?
    • good
    • 7
この回答へのお礼

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

お礼日時:2007/12/27 23:13

まずあなたがなぜArrayListをコピーする目的を明記するべきです。


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

ご回答及び、補足要求ありがとうございます。
あなた様のおっしゃるとおり、ArrayListのコピーの目的も明記した方が、状況がわかりやすかったかと思っております。大変失礼いたしました。
私自身、シャローコピーとディープコピーの理解があいまいでした。

この件に関しましては、ArrayLits li =new ArrayList(list);
で解決いたしました。
併し、シャローコピーとディープコピー、cloneメソッド等の理解があいまいですので、勉強したいと思っております。

ご意見本当にありがとうございました。

お礼日時:2007/12/27 23:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!