Remplir un hashset avec des clefs
Tigrao
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
J'ai implémenté une Table de Hachage en respectant l'interface suivante :
Il ne me reste plus qu'à implémenter la dernière méthode : public Set<Clef> keySet();
qui normalement permet de stocker toutes les clefs de ma table dans un hashset.
Mon problème est que je ne sais vraiment pas comment on manipule et donc rempli un hashset avec mes clefs...
Voici ce que j'ai essayer de faire :
Si quelqu'un pouvait m'aider, me conseiller, m'expliquer... !
Merci Beaucoup !
J'ai implémenté une Table de Hachage en respectant l'interface suivante :
import java.util.*; public interface Table<Clef,Element>{ public void put(Clef key, Element element); public Element get(Clef key); public Element remove(Clef key); public boolean containsKey(Clef key); public boolean containsValue(Element element); public int size(); public boolean isEmpty(); public void putAll(Table<Clef, Element> m); public void clear(); public String toString(); public Set<Clef> keySet(); }
Il ne me reste plus qu'à implémenter la dernière méthode : public Set<Clef> keySet();
qui normalement permet de stocker toutes les clefs de ma table dans un hashset.
Mon problème est que je ne sais vraiment pas comment on manipule et donc rempli un hashset avec mes clefs...
Voici ce que j'ai essayer de faire :
public Set<Clef> keySet(){ //Stock toutes les clefs dans un ensemble hashSet et retourne cet ensemble HashSet<Clef> set = new HashSet<Clef>(); for(int i=0; i<size(); i++){ LinkedList<Pair<Clef,Element>> l = tab.get(i); for(int j=0; j<l.size(); j++){ set.add(l.get(j).key); } } return set; }
Si quelqu'un pouvait m'aider, me conseiller, m'expliquer... !
Merci Beaucoup !
A voir également:
- Remplir un hashset avec des clefs
- Organigramme a remplir word - Guide
- Comment remplir un document pdf - Guide
- Fiche de paie à remplir gratuit excel ✓ - Forum compta / gestion
- Excel remplir automatiquement une cellule en fonction d'une autre ✓ - Forum Excel
- Copiez l'image dans un logiciel d'édition d'images ou un outil en ligne comme js paint ou pixlr e. remplissez les cases en suivant le code couleur. des cases supplémentaires vont se remplir automatiquement. que représente le dessin ? ✓ - Forum Photoshop
1 réponse
Bonjour,
Pour t'aider il faudrait que l'on sache quelle structure de donnée tu as utilisée pour faire ta map.
Tu as l'air d'utiliser un objet tab mais je ne comprendrends pas pourquoi tu fais un get(i) dessus, quel est le type de tab ?
Pour bien comprendre, pourrais tu nous donner le code de get et put, histoire de voir comment tu as organisé tout ça.
Pour t'aider il faudrait que l'on sache quelle structure de donnée tu as utilisée pour faire ta map.
Tu as l'air d'utiliser un objet tab mais je ne comprendrends pas pourquoi tu fais un get(i) dessus, quel est le type de tab ?
Pour bien comprendre, pourrais tu nous donner le code de get et put, histoire de voir comment tu as organisé tout ça.
non j'utilise un vecteur !
Et D'ailleurs mon constructeur par clonage ne fonctionne pas non plus et je ne sais pas comment faire ^^ si tu as une idée c'est cool aussi ! :)
Voici tout mon code comme ça tu comprendra le déroulement des choses :
Merci pour ton temps c'est cool !
Je viens de voir que je n'avais pas implémenter la méthode putall ... D'où le fait que mon constructeur par clonage ne fonctionne pas... Mais sachant que ça revient au-même que pour le constructeur, je ne sais pas trop comment faire !
De plus, c'est bizarre d'avoir des LinkedList dedans, normalement une Map n'a qu'une dimension et en cas de collision on recalcule un hashCode secondaire... normalement ça ne vient pas s'ajouter dans une liste.
Et pour revenir à la question de comment faire le HashSet des clés, il me semble que la manière dont tu as fait fonctionne... même si on peut la simplifier un peu avec des boucles foreach :
En fait, je pensais qu'elle ne marchait pas car elle m'affichait toujours un ensemble vide mais...
Juste avant j'ai vidé ma table t0... !
Bref... Je suis un boulet mdr désolé ! mais c'est en prenant la tienne qui était sensé marchait que je me suis douté de qqch en voyant le même résultat !
En tout cas merci beaucoup !
Par contre... C'est quoi le principe des foreach ? Ca m'a l'air assez intéressant !
Et pour répondre à tes questions du vector etc.. C'est mon prof qui nous a imposé ça et cette façon de faire ! du coup tu as surement raison mais il voulait nous le faire faire comme ça !
1) Avec un tableau, par exemple de type :
est équivalent à :
2) Avec un objet :
est équivalent à :
Remarque : Iterable est une interface implémentée notamment par les collections (Vector, List , Set etc.). Donc un des gros avantage c'est d'avoir une syntaxe commune pour itérer sur tous ces objets de type différents et donc de pouvoir changer de type sans avoir à réécrire les boucles for qui les manipulent.