我有这行代码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)它时,它会返回一个Listof 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
提交
取消
