这可能是显而易见的,但无法合理化此代码段的输出。参考:这个
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) 实际上应该删除列表中的第一个、第二个和第三个项目。很公平 ?