从列表中删除整数

时间:2013-11-25 09:50:31

标签: java list

如何正确检查列表是否有定义的整数?

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:Index:526,Size:1

所以,我需要弄清楚如何正确检查整数是否存储在列表中

2 个答案:

答案 0 :(得分: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)方法。

答案 1 :(得分:0)

假设您有一个列表

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

回答你的问题:

A :要检查整数是否属于整数列表,可以使用.contains()

itemsToDrop.contains(item)

,其中item是整数。这将返回truefalse

B :添加

itemsToDrop.add(item)

C :要删除

itemsToDrop.remove(item)

编辑:为了清楚起见,最初的帖子包含3个我回答的问题