ArrayList的remove(object)给出了IndexOutOfBoundsException

时间:2015-07-01 02:34:13

标签: java arraylist indexoutofboundsexception

很抱歉,如果之前有人询问,但我找不到任何有帮助的内容。基本上,当我向ArrayList添加一堆字符,然后尝试删除其中一个字符时,我得到一个IndexOutOfBoundsException,我不明白为什么。这是我所谈论的一般例子。

public void addChars(){
    ArrayList<Character> chars = new ArrayList<Character>();
    word = "hello";
    chars.add(word.charAt(0));
    chars.add(word.charAt(1));
    chars.add(word.charAt(2));
    chars.add(word.charAt(3));
    chars.add(word.charAt(4));

    chars.remove(word.charAt(1));
}

会出现以下错误

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 101, Size: 5
at java.util.ArrayList.rangeCheck(ArrayList.java:653)
at java.util.ArrayList.remove(ArrayList.java:492)
at trial.addChars(trial.java:26)
at trial.main(trial.java:31)

当我试图移除一个角色时,我不明白如何获得IndexOutOfBoundsException,不应该通过我的ArrayList&#34; chars&#34;来查看删除或不删除取决于字符是否存在?

如果我更改此代码以删除我的ArrayList中不存在的字符,它可以正常工作,只有当我尝试删除ArrayList中的某个字符时才会发生故障。

谢谢!

1 个答案:

答案 0 :(得分:1)

chars.remove((Character)word.charAt(1));

ArrayList.remove()方法也可以采用整数索引。尝试:

chars.remove(chars.indexOf(word.charAt(1)));