Java高級之List的一個面試小題

先來看段代碼:

	@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));

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章