Я пытаюсь удалить объект из ArrayList, но я продолжаю получать IndexOutOfBounds Error. Теперь доступно много информации, почему это происходит, когда итерация поверх ArrayList при удалении, однако я этого не делаю. Пример:
ArrayList<Character> a = new ArrayList<Character>();
a.add('A');
a.add('B');
a.add('C');
System.out.println(a);
a.remove('A');
System.out.println(a);
печатает [A, B, C]
, а затем сбой:
java.lang.IndexOutOfBoundsException: Index: 65, Size: 3
at java.util.ArrayList.rangeCheck(ArrayList.java:635)
at java.util.ArrayList.remove(ArrayList.java:474)
at b.<init>(b.java:23)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at bluej.runtime.ExecServer$3.run(ExecServer.java:746)
Почему это происходит?
EDIT, чтобы прояснить этот вопрос, не является дубликатом этого вопроса:
Конкретная проблема, которая здесь возникает, не имеет ничего общего с обычными проблемами при удалении элементов при повторении. Это скорее вызвано перегруженным методом ArrayList remove
и автоматическим преобразованием типов от char
до int
с помощью java.
Этот вопрос не рассматривается в ответе на другой вопрос.