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 :

Valeurs remplacées dans ma Hashmap


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 33
    Par défaut Valeurs remplacées dans ma Hashmap
    Bonjour tout le monde!

    J'ai un souci de HashMap, que je trouve assez étrange, j'espère que vous pourrez me dire ce que vous en pensez...

    Tout d'abord, voici le bout de code en question, il s'agit d'un simple remplissage de HashMap à partir de valeur contenues dans un tableau de String : line
    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
    contactInfos = new HashMap<String, String>();
     
    				contactInfos.put("lastname", line[lname].replaceAll("\"", ""));
    				contactInfos.put("firstname", line[fname].replaceAll("\"", ""));
     
    				String streetOf = line[streetOf1].replaceAll("\"", "") + line[streetOf2].replaceAll("\"", "") + line[streetOf3].replaceAll("\"", ""); 
    				contactInfos.put("street_office", streetOf);
    				contactInfos.put("city_office", line[cityOf].replaceAll("\"", ""));
    				contactInfos.put("postcode_office", line[postCodeOf].replaceAll("\"", ""));
    				contactInfos.put("country_office", line[countryOf].replaceAll("\"", ""));
     
    				String streetHo = line[streetHo1].replaceAll("\"", "") + line[streetHo2].replaceAll("\"", "") + line[streetHo3].replaceAll("\"", ""); 
    				contactInfos.put("street_home", streetHo);
    				contactInfos.put("city_home", line[cityHo].replaceAll("\"", ""));
    				contactInfos.put("postcode_home", line[postCodeHo].replaceAll("\"", ""));
    				contactInfos.put("country_home", line[countryHo].replaceAll("\"", ""));
    Comme vous pouvez le constater, les clés sont uniques à chaque fois. Cependant, j'ai pu observer avec le debugger que systématiquement l'avant-dernière ligne ("postcode_home") ne crée pas une nouvelle entrée dans la map mais remplace "street_office" ; de même, la dernière ligne remplace l'entrée "firstname" au lieu d'en créer une nouvelle.
    Je me retrouve donc avec 2 valeurs en moins dans ma map.

    Quelqu'un aurait-il une explication rationnelle?
    Merci de votre aide.
    A+
    GzG

  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 GandalfZeGrey Voir le message
    Cependant, j'ai pu observer avec le debugger que systématiquement l'avant-dernière ligne ("postcode_home") ne crée pas une nouvelle entrée dans la map mais remplace "street_office" ; de même, la dernière ligne remplace l'entrée "firstname" au lieu d'en créer une nouvelle.
    Je me retrouve donc avec 2 valeurs en moins dans ma map.
    As-tu vérifié cela avec du code ou seulement via le debugger ? Et comment ?
    L'organisation interne d'une Map peut changer après un ajout, mais cela ne signifie pas que les éléments sont perdu...


    a++

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 33
    Par défaut
    Salut adiGuba et merci de m'avoir répondu,

    En fait, j'ai testé ce remplissage de la map avec des valeurs provenant d'un fichier csv. Dans les 3 lots de valeurs que j'ai testé, j'ai suivi le remplissage avec le debugger d'Eclipse en mettant des points d'arrêts. C'est comme ca que j'ai pu voir que ces 2 valeurs étaient remplacées par les 2 dernières.
    Et à la fin du processus, si je fais un Inspect de la map, il apparait qu'elle a une taille de 10, alors que seuls 8 entrées apparaissent comme non nuls.

    Cela dit, tu m'as mis la puce à l'oreille et j'ai voulu vérifier autrement : si j'affiche les 2 valeurs "manquantes" dans la console à la fin du traitement, elles apparaissent bien.

    On dirait que c'est juste un dysfonctionnement du debugger d'Eclipse, ou un truc comme ca. Et pourquoi ces 2 valeurs et pas les autres? J'en sais rien !!

    Mais le principal, c'est que tout soit dedans!
    Merci pour ton aide!
    A+

  4. #4
    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
    Les HashMap utilisent un stockage en arbre : si tu déplie tous les éléments de la table tu verras que certains éléments comportent des sous-éléments...

    Je ne connais pas le fonctionnement exact mais je peux t'assurer d'une chose : cela marche bien

    a++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Remplacer une valeur existante dans une table
    Par bernardmichel dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 28/09/2007, 09h07
  2. Réponses: 1
    Dernier message: 29/09/2006, 08h59
  3. Remplacement d'une valeur hexa dans une chaine
    Par raoulchatigre dans le forum C++
    Réponses: 7
    Dernier message: 18/09/2006, 16h27
  4. remplacer les valeurs nulles dans une table
    Par jessy212 dans le forum Access
    Réponses: 4
    Dernier message: 28/08/2006, 13h22
  5. clés et valeurs à null dans une HashMap typée
    Par Djakisback dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 06/06/2006, 13h04

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