【发布时间】:2018-10-08 17:12:31
【问题描述】:
我需要写出一个方法来克隆一个嵌套的ArrayList。
嵌套的ArrayList 如下所示:
ArrayList<ArrayList<Ship>> theSea = new ArrayList<ArrayList<Ship>>();
我想将它复制到一个克隆:
ArrayList<ArrayList<Ship>> seaClone = new ArrayList<ArrayList<Ship>>();
我已经尝试迭代它并复制列表:
for(int i = 0; i < theSea.size(); i++){
seaClone.add(theSea.get(i));
}
但是,这不会克隆嵌套 ArrayList<Ship> 的元素,而只是复制对它的引用。
我应该如何去克隆嵌套ArrayList<Ship>的元素?
【问题讨论】:
-
你的
Ship班级是什么样子的? -
你需要两个循环,一个迭代外部
List,一个迭代内部Lists。并且不要使用clone()和Cloneablesince it is broken。 -
你可以在你的类
Ship(深拷贝)中覆盖克隆方法。然后编写一个函数来制作 ArrayListfor(Ship s : oldList) newLidt.add(s.copy());的深拷贝。现在你应该为所有 ArrayList 行调用这个编写的方法... -
@0x1C1B 你可以使用
clone(),但你不应该。请参阅我之前评论中的链接。 -
@Brian 为什么不试试呢?
标签: java arraylist nested bluej cloning