2013-03-18 15 views
3

現在我有一個ArrayList<Integer>
由於this表示,ArrayList有兩種刪除方法。
假設我有一個整數2,我想刪除該列表中的ELEMENT 2而不是POSITION 2(第三個元素)上的元素,那麼我應該如何告訴Java這樣做呢?如何指定Java使用哪種方法?

+0

大概你可以用'int'去除索引和'Integer'去除這個值。真正的問題是,你有什麼嘗試 – MadProgrammer 2013-03-18 03:42:50

+0

我曾嘗試使用ArrayList.remove僅僅是一個原始的整數,編譯器將它解釋爲使用remove(Object o)。我的不好,我應該補充這個細節。 – octref 2013-03-18 03:47:08

+0

@Patashu:感謝您的編輯!我忘了添加部分,這肯定會造成一些混淆。 – octref 2013-03-18 03:47:46

回答

8

這是一個與autoboxing有關的問題。其實,當T == Integer,你有兩種刪除方法:

  • void remove(int index)
  • void remove(Integer object)

僅僅通過它轉換成一Integer或使用強制編譯器選擇基於合適,對象,版本直接地Integer

list.remove((Integer)2); 
list.remove(Integer.valueOf(2)); 
+0

很棒的回答。我想知道爲什麼你編輯了(新的Integer(2))選擇..這不起作用嗎? – octref 2013-03-18 03:48:54

+0

'(Integer)2'和'Integer.valueOf(2)'都是'Integer',而不是'int'。 'list.remove方法'有什麼區別。 – Judking 2013-03-18 03:57:15

+0

@octref:這只是一個品味問題。我通常使用'新的Integer(..)',但兩者是平等的。 – Jack 2013-03-18 04:55:52

0

您應該使用public boolean remove(Object o)方法從列表中刪除對象。在你的情況下,你應該寫下如下語句:this.remove(new Integer(2));