我有这行代码
test.remove(Arrays.asList(test).indexOf(großezahl))
实际上,我想删除被称为“ test”的ArrayList中出现的“großezahl”。问题是,每次我尝试这段代码时,我都会遇到相同的问题
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
也许有更好的方法来解决问题,但这确实使我感到烦恼。如果有人想尝试我的示例,则“ test”为[2,3,4],“großezahl”为3。ArrayList也仅包含整数。
谢谢。
答案 0 :(得分:0)
由于<link>
是test
,因此ArrayList<Integer>
将创建一个Arrays.asList(test)
。由于List<ArrayList<Integer>>
仅包含List<ArrayList<Integer>>
的实例,因此它永远不能包含ArrayList<Integer>
。 3
始终返回-1。
您根本不应该拨打indexOf
:
asList
答案 1 :(得分:0)
当您使用Arrays.asList(test)
时,它返回List
中的ArrayLists
,而不是Integers
。
当然,您在那里找不到元素großezahl
(这就是indexOf()
返回-1的原因),因为它仅包含test
ArrayList
作为元素。
如果要从großezahl
中删除“ test
”元素:
如果großezahl
是Integer
类型,而不是int
类型,则应致电test.remove(großezahl);
。
如果großezahl
的类型为int
,则可以呼叫test.remove(new Integer(großezahl));
或test.remove(test.indexOf(großezahl));
希望对您有帮助!