它可能是明顯的東西,但不能合理化該代碼段的輸出。 參考:thisList.remove刪除奇怪的元素
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(ⅰ)應實際上移除第一,列表中的第二和第三項。很公平 ?
+1。我只是好奇,在循環內部設置'set.remove(0)'和'list.remove(0)'是否解決了這個問題?或者它仍然會有一個未定義的行爲? (醜陋的解決方案..但我只是想知道..) – Maroun
@MarounMaroun:我在想它會的。 –
@HovercraftFullOfEels感謝您指出迭代器的方式! – Kaunteya