Я реализовать equals()
, чтобы иметь возможность удалить список элементов массива по значению:Удалить из ArrayList по значению
public boolean equals(Object obj) {
if (obj == null) return false;
if (obj == this) return true;
if (!(obj instanceof Character)) return false;
Character ch = (Character) obj;
return ch.equals(this);
}
И это мой ArrayList:
static ArrayList<Character> sr = new ArrayList<Character>();
содержит:
Sr: [a, b, c, d, e, f, g]
Я собираюсь удалить a
и b
символов:
public static removeChars(){
...
sr.remove('a');
sr.remove('b');
}
Но всегда две последние детали (g
и f
) был удален.
Является ли 'Символ' пользовательским классом, который вы написали (или это' java.lang.Character'?). Какой класс содержит метод 'equals', который вы опубликовали? –
@MickMnemonic похоже, что он отключен при вызове 'remove', поэтому означает, что он должен быть' java.lang.Character' правильным? Хотя я не уверен, почему в этом случае OP использует пользовательский 'equals'. – sprinter
Да, это похоже на 'removeChars', что заставляет меня задаться вопросом, где находится реализация' equals'. Похоже, в этом вопросе опущено большое количество соответствующего кода. –