Partage
  • Partager sur Facebook
  • Partager sur Twitter

Utilistation de Iterator dans un Hastable.

13 août 2018 à 17:59:12

Bonjour , 

Je débute avec la programmation Java et le cours présent sur ce site , et je teste un peu tout avec la documentation Java pour voir ce qu'il est possible de faire , j'en suis actuellement à la partie sur les Collections ici ( https://openclassrooms.com/fr/courses/26832-apprenez-a-programmer-en-java/22278-les-collections-dobjets ) 

Dans l'exemple avec l'objet Hashset  , on utilise Iterator pour lire les valeurs de la collection et un peu plus haut Enumeration pour les lire les valeurs associés aux clés de l'objet Hastable . 

Je voulais voir si il etait aussi possible d'utiliser Iterator pour afficher le couple clé - valeur ( de ce que j'ai compris Iterator a remplacé Enumeration c'est bien ca ? )

Hashtable ht = new Hashtable();
        ht.put(1, "printemps");
        ht.put(10, "été");
        ht.put(12, "automne");
        ht.put(45, "hiver");


        Collection values = ht.values();
        Iterator itv = values.iterator();

        Set keys = ht.keySet();
        Iterator it = keys.iterator();


        while(it.hasNext() && itv.hasNext())
            System.out.println("clé : " +it.next()+ " | Valeur : " +itv.next());

Et j'ai comme affichage ceci : 

clé : 10 | Valeur : été

clé : 45 | Valeur : hiver

clé : 12 | Valeur : automne

clé : 1 | Valeur : printemps

Donc ma question c'est pourquoi ca affiche bien les bonnes combinaisons clé - valeur mais dans un ordre different que dans le code ? 

Merci d'avance.

  • Partager sur Facebook
  • Partager sur Twitter
13 août 2018 à 18:21:20

Bonjour.

Avant de commencer : Hashtable est "déprécié", utilise plutôt HashMap

HashMap est basé sur une structure de données de type table de hachage, composé d'un tableau ordonné selon le hashCode() dont les éléments pointent chacun vers un tableau.

Je te conseille d'aller étudier cela car c'est une notion totalement indépendante de Java et utilisé partout.
Regarde au passage les arbres (binaire), sur lequel est basé de nombreuses autres collections.

  • Partager sur Facebook
  • Partager sur Twitter
Angular 2 est l'avenir, jQuery c'est de la merde !!! - Java 8 c'est l'an 2016+ (programmez en 1 ligne)