2013-11-25 5 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

SO, мне нужно, чтобы выяснить, как правильно проверьте, сохранено ли целое в списке или нет

+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 
} 

Проблема с указанным выше кодом, вы фактически не вызываете 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

Только то, что я собирался написать, но вы были быстрее. Upvote. :) –

+0

Отличное наблюдение :) +1 от меня тоже –

+0

Спасибо! Я знал, что у меня правильный код (ну технически), но это имеет смысл. Все еще учусь! Это сработало. –

0

Предположим, что у вас есть список

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

Чтобы ответить на ваши вопросы:

: Для того, чтобы проверить, является ли число принадлежит к списку целых чисел, вы можете использовать .contains()

itemsToDrop.contains(item) 

, где элемент представляет собой целое число. Это вернет true или false.

B: Для того, чтобы добавить

itemsToDrop.add(item) 

C: Для того, чтобы удалить

itemsToDrop.remove(item) 

Edit: Просто чтобы быть ясно, первоначальный пост содержал 3 вопроса, которые я ответил

+0

Это то, что делает OP уже. –

+0

Первоначальный неотредактированный вопрос содержал 3 вопроса: A: Как проверить, есть ли целое число в списке? B: Как добавить целое число в список? C: Как удалить целое число из списка? –

+0

Тогда извиняюсь за мой нисходящий сигнал. Ситуация для меня не была очевидна. Мой голос заблокирован сейчас, потому что он старше 5 часов, если вы не отредактируете ответ. –

Смежные вопросы