背景:
一開始是想的在進入新頁面的時候複製一份集合,留著後續操作,直接就寫了 List A=List B,後面發現在操作B的時候,A裡面的資料也會跟著改變。
(影片教學推薦:java課程)
透過查詢發現,原來直接用「=」是相當於java中相同內容的陣列指向同一位址,即進行淺拷貝後A與B指向同一位址。造成的後果就是,改變B的同時也會改變A,因為改變B就是改變B所指向位址的內容,由於A也指向同一位址,所以A與B一起改變。複製一份獨立的陣列可以使用下面的方法:
public class GoodsBean extends HttpResult implements Cloneable{ @Override protected Object clone() throws CloneNotSupportedException { GoodsBean o = null; try { o = (GoodsBean) super.clone(); } catch (CloneNotSupportedException e) { e.printStackTrace(); } return o; } public ArrayList<GoodsBean> deep_clone(ArrayList<GoodsBean> cells, ArrayList<GoodsBean> clone_cells){ for(GoodsBean c : cells){ try { clone_cells.add((GoodsBean) c.clone()); } catch (CloneNotSupportedException e) { e.printStackTrace(); } } return clone_cells; } }
相關推薦:java入門教學
以上是java實作list的拷貝的詳細內容。更多資訊請關注PHP中文網其他相關文章!