java - 具有相同引用的两个 java List 对象?

标签 java list arraylist pass-by-reference

我正在使用两个包含一些数据的 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/

相关文章:

c - 如何在链表末尾添加节点?

c# - 我应该在 linq 搜索中使用字典还是列表?

Java:将元素从一个 ArrayList 传输到另一个 ArrayList

javascript - 如何获取数组中包含最大值的两个对象

java - 如何将图像放到 Jbutton 上

java - 将 PDF 附加到来自 Android 应用程序的电子邮件 - 文件大小为零

c# - 按对象的内部字段排序 List<T>

java - 如何在 Java 中替换 ArrayList 元素的现有值

Java 1.8 : TLSv1. 2 ClientHello 握手失败(缺少椭圆曲线扩展?)

java - java api 中的短语建议器整理查询