先來看段代碼:
@Test
public void test3() {
List list = new ArrayList();
list.add(1);
list.add(2);
list.add(3);
updateList(list);
System.out.println(list);
}
private void updateList(List list) {
list.remove(2);
}
問輸出的list的結果?
結果如下圖:
分析:
很明顯,把元素3即下標爲2的元素刪了,而不是刪除了實際的元素
2。因爲int型的元素,在往List裏面添加的時候會轉爲Integer類型。
remove方法的參數可以是對象,也可以是int型的下標,所以它肯定
會優先認爲參數是下標,而不會先把它裝箱,去刪除2這個對象。
要想刪除2這個對象要這樣寫list.remove(new Integer(2));