gpt4 book ai didi

java - 从 LinkedList (list1) 的实例创建了一个子列表 (list3) ,在子列表上调用了clear() 方法,没想到 list1 也会被更改

转载 作者:行者123 更新时间:2023-11-30 03:01:03 24 4
gpt4 key购买 nike

list1创建子列表(即list3)后,我在list3上调用clear()方法,期望list3将被清除而 list1 将保持不变。然而,结果清楚地表明 list1 也已更改。为什么会发生这种情况?

List<Integer> list1 = new LinkedList<>(Arrays.asList(null, 22, 33, 44, 22));

List<Integer> list3 = list1.subList(1, 3);
System.out.println(list3);

list3.clear();

System.out.println(list3);
System.out.println(list1);

结果:

[22, 33]
[]
[null, 44, 22]

最佳答案

要获得您想要的行为,您需要复制子列表。

只需调用 subList "返回指定的 fromIndex(包含)和 toIndex(不包括)之间的此列表部分的 View 。", "返回的列表受此列表支持,因此返回的列表中的非结构性更改是反射(reflect)在此列表中,反之亦然。”

[java.util.List API documentation]

关于java - 从 LinkedList (list1) 的实例创建了一个子列表 (list3) ,在子列表上调用了clear() 方法,没想到 list1 也会被更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35966004/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com