我需要从整数arraylist中删除整数。我对字符串和其他对象没有任何问题。但是当我删除时,整数被视为索引而不是对象。
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(300);
list.remove(300);
当我尝试移除300时,我得到:
06-11 06:05:48.576: E/AndroidRuntime(856): java.lang.IndexOutOfBoundsException: Invalid index 300, size is 3
答案 0 :(得分:24)
这是正常的,列表有.remove()
方法的两个版本:一个以整数作为参数并删除此索引处的条目,另一个以泛型类型作为参数(其中,在运行时,是Object
)并将其从列表中删除。
方法的查找机制总是首先选择更具体的方法......
你需要:
list.remove(Integer.valueOf(300));
以便调用.remove()
的正确版本。
答案 1 :(得分:11)
使用indexof查找项目的索引。
list.remove(list.indexOf(300));
答案 2 :(得分:4)
答案 3 :(得分:2)
请尝试以下代码从列表中删除整数,
public static void main(String[] args) {
List<Integer> lIntegers = new ArrayList<Integer>();
lIntegers.add(1);
lIntegers.add(2);
lIntegers.add(300);
lIntegers.remove(new Integer(300));
System.out.println("TestClass.main()"+lIntegers);
}
如果您通过传递基元来移除项目,那么它将把它作为索引而不是值/对象
答案 4 :(得分:1)
Use list.remove((Integer)300);