je mets en œuvre la equals()
de pouvoir supprimer un des éléments de la liste de tableau par valeur:Retirer du arraylist en valeur
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);
}
Et voici mon arraylist:
static ArrayList<Character> sr = new ArrayList<Character>();
contient:
Sr: [a, b, c, d, e, f, g]
Je vais retirer a
et b
caractères:
public static removeChars(){
...
sr.remove('a');
sr.remove('b');
}
Mais toujours deux derniers articles (g
et f
) ont été supprimés.
Est-ce que 'Character' est une classe personnalisée que vous avez écrite (ou est-ce' java.lang.Character'?). Quelle classe contient la méthode 'equals' que vous avez publiée? –
@MickMnemonic On dirait qu'il est autoboxé dans l'appel de 'remove', ce qui signifie qu'il doit être' java.lang.Character', n'est-ce pas? Bien que je ne sois pas sûr pourquoi OP est en train d'implémenter un 'equal 'personnalisé dans ce cas. – sprinter
Oui, cela semble être le cas dans 'removeChars', ce qui me fait me demander où réside l'implémentation' equals'. Il semble que beaucoup de code pertinent a été omis de la question. –