Partage
  • Partager sur Facebook
  • Partager sur Twitter

ordre de parcours d'une collection java

    9 juillet 2019 à 21:50:00

    bonjour, 

    je commence à utiliser les collections java et j'aimerais vous poser une question : si on parcours deux fois une collection avec un iterator, est ce qu'on obtient forcement le même ordre de parcours ?

    Merci.

    Bonne soirée.

    • Partager sur Facebook
    • Partager sur Twitter
      9 juillet 2019 à 22:48:53

      Oui, le principe d'un itérateur est de parcourir un conteneur de son premier élément à son dernier élément. Mais tu peux ensuite utiliser des streams (plus concis dans le code). Pour apprendre à t'en servir, je te renvoie au cours sur le Java de Cysboy (si ce n'est pas le cours que tu es en train de suivre).
      • Partager sur Facebook
      • Partager sur Twitter
        10 juillet 2019 à 10:25:30

        Non, pas du tout !

        Certaines collections sont ordonnées, par exemple les SortedMap, les SortedSet, toutes les Queue et toutes les List.
        D'autres ne le sont pas, par exemple les HashMap et les HashSet.

        Il faut que tu consultes la documentation de la collection avec laquelle tu travailles.

        Même si une collection n'est pas ordonnée, ça n'empêche que tu peux obtenir les valeurs dans le même ordre avec deux itérations successives. Mais ce n'est pas garanti, et il ne faut donc pas compter là-dessus pour que ton code fonctionne.

        Si tu as besoin de garantir l'ordre des éléments, utilise une implémentation qui le fait.

        • Partager sur Facebook
        • Partager sur Twitter
          10 juillet 2019 à 11:36:35

          Il me semblait les HashMap et les HashSet n'ont pas d'itérateurs à cause justement du fait qu'ils ne soient pas ordonnés.
          • Partager sur Facebook
          • Partager sur Twitter
            10 juillet 2019 à 11:46:14

            Si bien sûr, HashSet a un itérateur puisqu'il implémente l'interface Collection qui a une méthode iterator().
            HashMap en a un aussi, indirectement, puisque tu peux obtenir la collection des clés (Map.keySet()), des valeurs (Map.values()) ou des entrées (Map.entrySet()), chacune pouvant être itérée puisqu'elle hérite aussi de Collection.

            Par contre la documentation de la méthode iterator() indique clairement :

            "Returns an iterator over the elements in this collection. There are no guarantees concerning the order in which the elements are returned (unless this collection is an instance of some class that provides a guarantee)."

            • Partager sur Facebook
            • Partager sur Twitter
              11 juillet 2019 à 0:14:26

              Ok merci beaucoup pour vos réponses.

              Bonne soirée.

              • Partager sur Facebook
              • Partager sur Twitter

              ordre de parcours d'une collection java

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown