Удаление символа из ArrayList символов
Я столкнулся с этим нежелательным преобразованием char
в int
в цикле. Скажем, у меня есть этот список символов, и я хочу удалить один из них:
List<Character> chars = new ArrayList<>();
chars.add('a');
chars.add('b');
chars.add('c');
chars.remove('a'); // or chars.remove('a'-'0');
поэтому 'a'
интерпретируется как значение int
, и я получаю исключение IndexOutOfBoundsException
. Есть ли какие-либо легкие способы решения этой проблемы?
Ответы
Ответ 1
A char
продвигается до int
, который имеет приоритет перед автобоксингом, поэтому remove(int)
вызывается вместо remove(Object)
, вы можете интуитивно ожидать.
Вы можете принудительно вызвать "правильный" метод, поместив аргумент самостоятельно:
chars.remove(Character.valueOf('a'));
Ответ 2
Вам нужно передать его типу объекта, чтобы заставить компилятор выбрать remove(Object)
вместо remove(int)
:
chars.remove((Character) 'a');
Ответ 3
Вы можете выполнить поиск по списку, где a
окажется.
chars.remove(chars.indexOf('a'));