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