我正在使用两个包含一些数据的 java List 对象。
第一个列表包含其中的所有数据对象,第二个列表包含原始列表中的一些数据(不是全部)。
原始列表本身是一个可以访问的静态对象。
下面的代码将原始列表的全部内容复制到一个新列表中,然后通过删除某些元素来修改复制的列表。
我遇到的问题是它似乎影响并从原始列表中删除了相同的元素!
private List<Device> deviceList;
deviceList = App.devices;
//check which devices have not been added by checking the position data
for (Iterator<Device> iterator = deviceList.iterator(); iterator.hasNext(); ) {
Device device = iterator.next();
if (device.getPosition() != Device.NO_POSITION) {
iterator.remove();
}
}
最佳答案
在这行代码中:
deviceList = App.devices;
您不是在复制列表,而是在创建另一个对它的引用。
要制作列表的浅拷贝,您可以使用例如:ArrayList
构造函数,它接受 Collection
作为参数并进行复制。
所以应该是这样的:
private List<Device> deviceList = new ArrayList(App.devices);
关于java - 具有相同引用的两个 java List 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27569964/