2013-11-25 43 views
4

如何正確檢查列表是否具有已定義的整數?從列表中刪除整數

private List<Integer> itemsToDrop = new ArrayList<Integer>(); 
private int lastRateAdded, lastDropAdded; 


if(itemsToDrop.contains(lastDropAdded)) 
{ 
     itemsToDrop.remove(lastDropAdded); 

} 
itemsToDrop.add(DropConfig.itemDrops[npc][1]); 
lastRateAdded = itemRate; 
lastDropAdded = DropConfig.itemDrops[npc][1]; 

然而,這引發了以下錯誤

java.lang.IndexOutOfBoundsException:指數:526,大小:1

所以,我需要弄清楚如何正確檢查整數是否存儲在列表中

+1

看起來這個異常實際上與您的DropConfig類而不是列表有關。 – Dragondraikk

+1

itemsToDrop是一個空的Arraylist,你在哪裏填充datda? –

+0

異常與列表有關,我已經調試過了。 @Hussain,我不確定。我只是在學習並遵循我給出的步驟。也許我錯過了某個地方,這是我的問題。我正在嘗試將東西添加到數組列表中,但問題在於檢查我想要移除的內容是否存在,如果它爲假,它會重新調用true。 –

回答

10
List<Integer> list = new ArrayList<Integer>(Arrays.asList(5, 10, 42)); 
if (list.contains(10)) { 
    list.remove(10); // IOOBE 
} 
3個問題

問題與上面的代碼是,你實際上不是調用List#remove(Object),而是List#remove(int),它刪除給定索引處的元素(並且索引10處沒有元素)。

使用,而不是:

List<Integer> list = new ArrayList<Integer>(Arrays.asList(5, 10, 42)); 
if (list.contains(10)) { 
    list.remove((Integer) 10); 
} 

這樣一來,你強制編譯器使用List#remove(Object)方法。

+2

正是我正要寫,但你得更快。給予好評。 :) –

+0

大觀察:) +1離我太 –

+0

謝謝!我知道我的代碼是正確的(技術上),但這是有道理的。仍在學習!這工作。 –

0

假設你有一個列表

private List<Integer> itemsToDrop = new ArrayList<Integer>(); 

回答您的問題:

一個:要檢查是否整數屬於整數列表,你可以使用.contains()

itemsToDrop.contains(item) 

,其中項目是一個整數。這將返回truefalse

:要添加

itemsToDrop.add(item) 

Ç:要刪除​​

itemsToDrop.remove(item) 

編輯:只要是明確的,最初的貼子中,我回答

+0

這就是OP已經在做的事情。 –

+0

初始未經編輯的問題包含3個問題: 答:如何檢查整數是否在列表中? B:如何向列表中添加整數? C:如何從列表中刪除整數? –

+0

然後爲我的downvote道歉。這種情況對我來說並不明顯。我的投票現在被鎖定,因爲它的時間超過5小時,除非您編輯答案。 –