我有这行代码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 也只包含整数。提前致谢。
2 回答
GCT1015
TA贡献1827条经验 获得超4个赞
当您使用Arrays.asList(test)
它时,它会返回一个List
of 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));
我希望它会帮助你!
一只甜甜圈
TA贡献1836条经验 获得超5个赞
既然test
是ArrayList<Integer>
,Arrays.asList(test)
就会创建一个List<ArrayList<Integer>>
。由于 a List<ArrayList<Integer>>
, 只包含 的实例ArrayList<Integer>
,它永远不能包含3
。indexOf
总是返回-1。
你根本不应该打电话asList
:
test.remove(test.indexOf(grossezahl));
添加回答
举报
0/150
提交
取消