List 深淺複製

2021-08-19 11:56:58 字數 1035 閱讀 2060

前幾天做專案  因為list深淺複製的事兒  鼓搗了半天

原來是有這個概念的 因為自己用的不是很多  寫起來一時寫的順手 就沒有可以的去寫 結果就出問題了

直接寫出來經歷  防止以後犯渾  

第一次這樣寫的    

//源list   

listsourselist = new arraylist<>();

//複製體list

listcopylist = new arraylist<>(sourselist);

這是淺複製  修改copylist的值  會影響到sourselist的值

第二次發現錯以後沒經過大腦直接又寫錯了    

//源list

listsourselist = new arraylist<>();

listcopylist = new arraylist<>();

for (ad ad : sourselist)

這也是淺複製  效果同上  :)

又發現錯了以後  還是沒有查資料 想到collection裡面好像有個copy方法  就沒有多想 直接 點上了   :)

第三次

//源list

listsourselist = new arraylist<>();

listcopylist = new arraylist<>();

collections.copy(copylist,sourselist);

後來發現又錯了 哈哈哈哈哈   點進去看了眼原始碼 看到了熟悉的東西  cnm

public static 

void

copy(list super

t> dest, list extends

t> src) else }}

public static 

list deepcopy(list src) catch (exception e)

}

具體啥原因就不寫了  引以為戒吧 

oc 深淺複製

淺 復 制 在複製操作時,對於被複製的物件的每一層複製都是指標複製。深 復 制 在複製操作時,對於被複製的物件至少有一層複製是物件複製。完全複製 在複製操作時,對於被複製的物件的每一層複製都是物件複製。注 1 在複製操作時,對於物件有n層是物件複製,我們可稱作n級深複製,此處n應大於等於1。2 對於...

深淺複製 2

前面講了深淺複製的概念,而實操中我們會遇到更多的情況 我們可以看到這兩個copywithzone方法在arc下已經是放棄了,這兩個方法的使用非常簡單,一般的格式如下 1.實現nscopying協議 2.實現copywithzone方法 3.呼叫 我們看看結果 結果非常明顯了,這類似於上篇所講的情況,...

Python 深淺複製

python中的賦值語句不複製物件,它們在目標和物件之間建立繫結。對於可變的或包含可變項的容器,有時需要乙個副本,所以可以改變乙個副本而不改變另乙個。將建立乙個新物件,但它包含的是對原始物件包含的項的引用。a b list a c a.copy d copy.copy a 建立乙個新物件,並且遞迴的...