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

Collection et Stream Java Discussion :

Parcours d'une hashMap


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de skulled
    Inscrit en
    Décembre 2006
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 120
    Par défaut Parcours d'une hashMap
    Bonjour,

    J'aimerai savoir quand est-ce que je suis au dernier enregistrement de ma hashmap pour pouvoir faire un traitement spécial au dernier.

    Voilà le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Map<String, String> list = new HashMap<String, String>();
    ...
    for(String key : list.keySet()) {
      String value = list.get(key);
    }
    Sachan que la map ressemble à ça :

    [null, null, null, null, null, null, null, ville=PARIS, null, null, null, null, null, null, null, pays=France]

    Le list.size() retourne 2.

    Merci

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par skulled Voir le message
    J'aimerai savoir quand est-ce que je suis au dernier enregistrement de ma hashmap pour pouvoir faire un traitement spécial au dernier.
    C'est à dire ? Quel est ce "traitement spécial" ?
    Quel est l'objectif de cela ?

    Citation Envoyé par skulled Voir le message
    Sachan que la map ressemble à ça :

    [null, null, null, null, null, null, null, ville=PARIS, null, null, null, null, null, null, null, pays=France]

    Le list.size() retourne 2.
    D'où tu sors cà ? C'est quoi tout ces null ???


    a++

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Alors déjà il vaut mieux parcourir l'entrySet que parcourir le keySet() et faire une recherche de la valeur à partir de la clé à chaque fois :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for(Map.Entry<String, String> entry : list.entrySet()) {
      String key = entry.getKey();
      String value = entry.getValue();
      // ...
    }
    Ensuite, une solution que j'aime bien pour ta question, tourne autour des itérateurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Iterator<Map.Entry<String, String>> itr = list.entrySet().iterator();
    while(itr.hasNext()) {
      Map.Entry<String, String> entry = itr.next();
      String key = entry.getKey();
      String value = entry.getValue();
      // Faire des trucs avec key et value ...
     
      if(!itr.hasNext()) {
        // Nous sommes au dernier enregistrement. Le traiter.
      }
    }
    [null, null, null, null, null, null, null, ville=PARIS, null, null, null, null, null, null, null, pays=France]
    D'où tu sors cà ? C'est quoi tout ces null ???
    Ça ressemble furieusement à la table des entry d'une HashMap, mais je serais bien infoutu de savoir pourquoi il nous montre ça au lieu du simple toString() de la HashMap.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 209
    Billets dans le blog
    52
    Par défaut
    Je n'ai jamais vue de spécification dans la java donc qui indique de le dernier élément d'une HashMap est obligatoirement le dernière inséré.
    Il est donc risqué de prendre cette hypothèse pour l'implémentation d'un comportement.
    Je cite d'ailleurs la javadoc :
    This class makes no guarantees as to the order of the map; in particular, it does not guarantee that the order will remain constant over time.
    Le mieux serait lors de l'ajout de mémorisé l'entré à ajouté, avant de l'ajouter.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    private Map<String, String> list = new HashMap<String, String>();
    private String lastRegistredKey = null;
    public addInMap(String key, String value)
    {
    this.lastRegistredKey = key;
    this.list.add(key,value);
    }
    Cela me semble un peu plus simple et plus sur au niveau du comportement.

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par kolodz Voir le message
    Je n'ai jamais vue de spécification dans la java donc qui indique de le dernier élément d'une HashMap est obligatoirement le dernière inséré.
    Dans ce cas-là, il vaudrait mieux utiliser un LinkedHashMap.
    Mais ce n'est pas comme ça que j'ai compris la question.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Soucis de parcours d'une Hashmap
    Par Bourg dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 17/02/2015, 21h14
  2. Parcours d'une Hashmap et suppression d'un élément
    Par gobgob dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 24/09/2008, 20h50
  3. Parcours d'une HashMap (java)
    Par basket10 dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 28/03/2007, 16h06
  4. [C#] [ADO] Parcours d'une grande quantité d'enregistrements
    Par Wavyx dans le forum Windows Forms
    Réponses: 4
    Dernier message: 21/09/2004, 09h16
  5. [débutant] cherche a copier une HashMap
    Par mathieublanc13 dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 09/05/2004, 14h33

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