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


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);

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


arison.jp
あなたの「いいね」が欲しいです。
「【Java】シャローコピーとディープコピー」をシェアする
このエントリーをはてなブックマークに追加 G plus LINE