我有這行代碼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
提交
取消