Bonjour,

Je voulais utiliser une collection d'objets de type Animal (classe que j'ai créée) et j'ai choisi un HashSet parce que je ne voulais pas de doublons. J'ai redéfini la méthode equals pour que deux animaux soient égaux si ils ont le même nom mais j'ai toujours des doublons.
Code : 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
22
23
24
25
26
public class Animal {
 
  public String nom;
  public int poids;
 
  public Animal(String nom, int poids) {
    this.nom = nom;
    this.poids = poids;
  }
 
  @Override
  public String toString() {
    return "Je suis "+ nom+ " et je pèse "+poids+"kg.";
  }
 
  @Override
  public boolean equals(Object obj) {
    if (obj instanceof Animal) {
      Animal a = (Animal) obj;
      if (a.nom.equalsIgnoreCase(nom)) {
        return true;
      }
    }
    return false;
  }
}
Code : 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
import java.util.*;
public class TestAnimal {
  public static void main(String args[]){
    Set<Animal> tab = new HashSet<Animal>();
    tab.add(new Animal("tortue", 355));
    tab.add(new Animal("lion", 25));
    tab.add(new Animal("ornithorynque", 87));
    tab.add(new Animal("tortue", 10));
 
    System.out.println(tab);
 
    for (Animal a : tab) {
      System.out.println(a);
    }
  }
}
Quand j'exécute mon code, j'obtiens ça:

[Je suis lion et je pèse 25kg., Je suis tortue et je pèse 355kg., Je suis ornithorynque et je pèse 87kg., Je suis tortue et je pèse 10kg.]
Je suis lion et je pèse 25kg.
Je suis tortue et je pèse 355kg.
Je suis ornithorynque et je pèse 87kg.
Je suis tortue et je pèse 10kg.

J'espère que vous pourrez m'aider.