我有两个相同类型的ArrayList<object>
。我使用ArrayList<object>
A初始化ArrayList<object>
B,当我更改B时,A也会发生变化。
如何复制A没有关系?
答案 0 :(得分:1)
List<String> a = new ArrayList<>();
a.add("Hello");
a.add("World");
List<String> b = new ArrayList<>();
b.addAll(a);
b.remove(0);
System.out.println(a);
System.out.println(b);
答案 1 :(得分:1)
我认为你正在寻找像这样的东西
ArrayList<Object> B = new ArrayList<>(A);
它们必须明显属于同一类型。
答案 2 :(得分:0)
在Java中,您需要自己逐个复制每个元素,以获取ArrayList的深层副本。在您自己的实现中,您必须使用其默认构造函数或通过添加到类中的自定义构造函数方法构造每个列表元素。
收藏方法:
Collections.copy(ArrayList<T> a, ArrayList<T> b);
不执行深层复制。
答案 3 :(得分:0)
我用deepCopy解决了我的问题我认为这是最好的方法但是我不知道需要多少内存。 我用这个链接来解决:deepCopy
深度复制元节是: /**
* This method makes a "deep clone" of any Java object it is given.
*/
public Object deepClone(Object object) {
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(object);
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
ObjectInputStream ois = new ObjectInputStream(bais);
return ois.readObject();
}
catch (Exception e) {
e.printStackTrace();
return null;
}
}
谢谢大家。