Bonjour,
J'ai un petit probleme avec les listes chainées et la fonction removeAll :
1) je crée une classe dont je redéfinis la fonction equals
2) je crée deux listes chainees de ce nouveau type
3) je remplis ces deux listes avec les mêmes valeurs
4) j'utilise removeAll pour supprimer dans la 1ère liste les éléments communs aux deux listes
Le problème est que la 1ère liste reste intacte. La fonction equals de ma classe n'est même pas invoquée, du coup la comparaison doit se faire avec ==.
De plus je ne trouve pas beaucoup d'aide dans la documentation :
- http://java.sun.com/javase/6/docs/ap...inkedList.html
- http://java.sun.com/javase/6/docs/ap...il.Collection)
Voici un exemple minimum de code dans lequel le problème survient :
fichier Main.java
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 import java.util.LinkedList; public class Main { public static void main(String[] arguments) { LinkedList<Entier> liste1 = new LinkedList<Entier>(); liste1.add(new Entier(1)); liste1.add(new Entier(2)); liste1.add(new Entier(3)); System.out.println("liste1 : "+liste1); LinkedList<Entier> liste2 = new LinkedList<Entier>(); liste2.add(new Entier(1)); liste2.add(new Entier(2)); liste2.add(new Entier(3)); System.out.println("liste2 : "+liste2); liste1.removeAll(liste2); System.out.println("liste1.removeAll(liste2) : "+liste1); } }
fichier Entier.java
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 public class Entier { public int a; public Entier(int a) { this.a = a; } public boolean equals(Entier entier) { System.out.println("equals invoqué"); return a == entier.a; } public String toString() { return a+""; } }
Quelqu'un connait la fonction de la classe Entier qu'il faut redéfinir ?
Merci d'avance pour votre aide.
Partager