IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

ordre de lecture dans PriorityQueue !


Sujet :

Langage Java

  1. #1
    Membre régulier
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Avril 2006
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 277
    Points : 123
    Points
    123
    Par défaut ordre de lecture dans PriorityQueue !
    Salut à tous,

    J'essaye de comprendre l'ordre de lecture dans l'objet PriorityQueue, j'ai crée un exemple simple :
    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
     
    import java.util.PriorityQueue;
     
    public class CreatePriorityQueue {
     
        public static void main(String[] args) {
    PriorityQueue queue=new PriorityQueue();
     
    queue.add("5");
    queue.add("11");
    queue.add("4");
    queue.add("9");
    queue.add("3");
     
    System.out.println("Contenu de la queue : "+ queue);
     
        }
    }
    Après exécution sur Eclipse j'obtiens :
    Contenu de la queue : [11, 3, 4, 9, 5] // rien compris sur cet ordre !
    Quel ordre a été suivi ? Merci pour l'aide !

  2. #2
    Membre émérite
    Avatar de Mickael_Istria
    Homme Profil pro
    Développeur Expert Eclipse IDE/RCP, pour Red Hat
    Inscrit en
    Juillet 2008
    Messages
    1 469
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Expert Eclipse IDE/RCP, pour Red Hat
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 469
    Points : 2 997
    Points
    2 997
    Par défaut
    Quand tu mets `"Contenu de la queue : "+ queue`, en fait ca appelle queue.toString() pour l'ajouter au texte. Or toString() n'est pas une methode qui respecte la logique de la priorityQueue et son implementation n'est donc pas tres interessante.
    Si tu veux lister le contenu dans l'ordre, il faut que tu iteres dessus avec iterator() ou for ou stream().
    Pour du HTML, CSS, JavaScript, TypeScript, JSon, Yaml, Node... dans Eclipse IDE, installe Eclipse Wild Web Developer
    Pour du Rust dans Eclipse IDE, installe Eclipse Corrosion
    Follow me on twitter

  3. #3
    Membre régulier
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Avril 2006
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 277
    Points : 123
    Points
    123
    Par défaut
    même avec Iterator je rencotre le même problème !

    Exemple :
    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
     
    import java.util.*;
     
    public class MaListe {
     
    	public static void main(String[] args) {
    		PriorityQueue<String> pq=new PriorityQueue<String>();
    		pq.add("Avion");
    		pq.add("bus");
    		pq.add("voiture");
    		pq.add("moto");
    		pq.add("Velo");
     
    Iterator<String> it=pq.iterator();
    while(it.hasNext()){
    	System.out.println(it.next());	
    }
    	}
    }
    Après exécution il s'affiche :

    Avion
    Velo
    voiture
    moto
    bus

    Je me demande quel ordre a été choisi ?

  4. #4
    Membre émérite
    Avatar de Mickael_Istria
    Homme Profil pro
    Développeur Expert Eclipse IDE/RCP, pour Red Hat
    Inscrit en
    Juillet 2008
    Messages
    1 469
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Expert Eclipse IDE/RCP, pour Red Hat
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 469
    Points : 2 997
    Points
    2 997
    Par défaut
    En fait, je t'ai dit n'importe quoi, desole. La doc est plus claire: https://docs.oracle.com/javase/8/doc...rityQueue.html :
    This class and its iterator implement all of the optional methods of the Collection and Iterator interfaces. The Iterator provided in method iterator() is not guaranteed to traverse the elements of the priority queue in any particular order
    et
    The queue retrieval operations poll, remove, peek, and element access the element at the head of the queue.
    Donc l'iterator ne garantit rien non plus, et seules les operations sur la "head" sont conformes aux attentes d'une priority queue.
    Pour du HTML, CSS, JavaScript, TypeScript, JSon, Yaml, Node... dans Eclipse IDE, installe Eclipse Wild Web Developer
    Pour du Rust dans Eclipse IDE, installe Eclipse Corrosion
    Follow me on twitter

Discussions similaires

  1. [Portal 9iAS] : ordre des items dans une région
    Par melitta dans le forum Oracle
    Réponses: 8
    Dernier message: 21/10/2004, 14h01
  2. [C#] Lecture dans un endroit précis d'un fichier ...
    Par maitrebn dans le forum Windows Forms
    Réponses: 3
    Dernier message: 15/10/2004, 13h36
  3. Ordre des tests dans la clause WHERE
    Par Tans98 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 22/09/2004, 10h52
  4. Réponses: 12
    Dernier message: 14/06/2004, 13h06
  5. Ordre des champs dans une table
    Par patapetz dans le forum Outils
    Réponses: 5
    Dernier message: 30/07/2003, 06h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo