Bonjour,
Ma question est philosiphique... mais aussi utile à moi
La classe (import java.util.)Set est un ensemble d'objets unique dans le sens Object.equals(Object) du terme. Cette classe est bien utile dans ma question... Elle permet de faire un ajout d'élément comme pour une Map :
Set.add(Object) "<=>" Map.put(Object.hashCode(),Object) -je laisse là les puristes interloqués : les guillemets me permettent de dire l'équivalence.
Bon, là c'est bien, c'est pratique et c'est rapide. Mais c'est là que je pose la question -enfin !... Comment faire pour lire un objet dans le Set ? Je veux dire par là, qu'il n'y a pas de méthode pour retourner un objet présent dans le Set, s'il y est déjà... un genre de Set.get(Object) qui retourne l'objet équivalent dans le Set (celui qui est unique). Pourtant, quand je fait un Set.contains(Object)... l'objet est bien trouvé... Mais pas retourner si je le veux.
Vous allez me dire... "Tu dois utiliser le .toArray() ou le .iterator() -etc. pour le trouver ton objet !". Et vous avez raison. Mais je perd tout le bénifice du hachage dans ce cas. Je dois parcourir un à un les éléments et faire le teste d'égalité.
Je peux aussi utiliser une Map, avec, à chaque ajout : Map.add(object.hashCode(),object)... Mais c'est lourd et pleins de risques...
Je peux aussi une classe MapWrapper héritant d'une Map et qui redéfini la méthode add...
Vous faites comment ? Vous feriez quoi ?
Merci.
Partager