【发布时间】:2014-04-28 09:27:25
【问题描述】:
我有一个嵌套的ArrayList 形式
ArrayList<ArrayList<PointF>> nestedArraylist
我想在以下意义上创建nestedArraylist 的“副本”nestedArraylistCopy:
nestedArraylistCopy 的元素应该是nestedArraylist 中元素的独立 副本,即应该是 ArrayLists,其中包含对 相同 PointF 对象的引用原nestedArraylist。
我能以某种方式使用
Collections.copy(dest, src)来做我想做的事吗?不幸的是,文档并不十分详细...-
下面的代码能满足我的要求吗?
for(int i = 0; i < nestedArraylist.size(); i++) nestedArraylistCopy.add(new ArrayList<PointF>(nestedArraylist.get(i))); 有没有更高效、更优雅的解决方案?
【问题讨论】:
-
关于你的第二个问题,你可以很容易地测试它..
-
是的,我可以并且已经测试了第二个选项并认为它有效。但是,我想问一下
Collections.copy()和一个更优雅的解决方案,所以我认为它会使这个问题更完整和有用。 -
其实我没看懂你问题里的两个粗体字
independent和same.... -
independent = 如果你修改了nestedArraylist 的元素,nestedArraylistCopy 的元素不应该改变same = 如果你修改了其中一个ArrayLists 中的PointF nestedArraylist,那么nestedArraylistCopy中ArrayLists中对应的PointF应该会改变。
-
@cgogolin 听起来你想要
List<PointF>不同的对象,但与源列表共享相同的PointFref。那么你在第二季度的方式应该没问题。但请记住,如果您“更改”了复制列表中的 PointF,则元素源列表也会更改。顺便说一句,这可以很容易地测试。
标签: java collections arraylist deep-copy