gpt4 book ai didi

java - List.remove 删除奇数元素

转载 作者:行者123 更新时间:2023-12-01 06:39:36 25 4
gpt4 key购买 nike

这可能是显而易见的事情,但无法合理化此代码片段的输出。引用:this

public class Sample {

public static void main(String[] args) {
Set<Integer> set = new TreeSet<Integer>();
List<Integer> list = new ArrayList<Integer>();

for (int i = -3; i < 3; i++) {
set.add(i);
list.add(i);
}
System.out.println("After adding elements:");
System.out.println(set + " " + list);

for (int i = 0; i < 3; i++) {
set.remove(i);
list.remove(i);
}
System.out.println("After removing elements:");
System.out.println(set + " " + list);
}
}

输出:

添加元素后:

[-3,-2,-1,0,1,2][-3,-2,-1,0,1,2]

删除元素后:

[-3,-2,-1][-2,0,2]

我期待:

删除元素后:

[-3, -2, -1] [0, 1, 2]

即list.remove(i) 实际上应该删除列表中的第 1、第 2 和第 3 项。够公平吗?

最佳答案

当您删除第一个元素时,您会更改列表中元素的位置,因此您的代码的行为是有意义的:

例如

for (int i = -3; i < 3; i++) {
set.add(i);
list.add(i);
}
System.out.println("After adding elements:");
System.out.println(set + " " + list);

for (int i = 0; i < 3; i++) {
set.remove(i);
list.remove(i);
}

每次调用 list.remove(i) 时,列表都会缩小 1 个项目,并且项目位置会向左移动:位于位置 1 的项目移至位置 0 ,位置 2 的项目移入位置 1 等...

使用Iterator删除元素或List的clear方法。

如果您想根据其值删除 Integer 对象,请将 int 更改为 Integer:

list.remove(Integer.valueOf(i));

关于java - List.remove 删除奇数元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16635063/

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