arison.jp arison.jp blog - 現在をたのしく、未来をたのしむ。日常の思い出兼備忘録。

【Java】シャローコピーとディープコピー

Javaでよく言われるシャローコピーとディープコピーについて

シャローコピー はshallow copyのカタカナで、浅い複製という意味です。
ディープコピー はdeep copyのカタカナで、深い複製という意味です。

List,Mapのシャドウコピーに注意 なんとなくシステムエンジニア
http://hetaresystemengineer.seesaa.net/article/190146032.html

ちなみにシャドウコピーではなくシャローコピー。


List listA = new ArrayList(16);
List listB = new ArrayList(16);
List listC = new ArrayList(16);

/** addAllを使ってディープコピー (コピー先を変更してもコピー元は値が変わらない)*/
listB.addAll(listA);

/** シャローコピー (コピー先を変更するとコピー元も値が変わる) */
listC = listA;

listCのように”=”で設定すると同じ値を参照します。⇒シャローコピー
listBのようにaddAllを使えば独立した値を作ります。。⇒ディープコピー
(Mapの場合はputAll)


 // map1を引数にmap2を作成
    Map<String, String> map2 = new HashMap<String, String>(map1);

基本的にシャローコピーするぐらいなら、自分は使いわまします。
どっちかっていうとディープコピーすることのほうが多いかな。

About arison

大都会岡山の南部にある玉野市生まれ。 大都会岡山のIT会社(目標は大都会No.1)でコンピュータとお客を相手に日夜格闘中。 関東出張中はグルメブログ。 基本的に遊び人のおっさん。 ライフハックとガンダム好き。ギガフロート玉野を浸透中。

05. 1月 2013 by arison
Categories: 日記, プログラミング | Tags: | Leave a comment

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください