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 :

Comparaison de deux HashMap


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 4
    Par défaut Comparaison de deux HashMap
    Bonjour,
    J'ai deux Hashmap de taille différente.
    Ex :
    H1 = [Simu1={simul2=null}, simul2={simul1=null, simul3=null}]
    H2 = [{simul2={simul3=null}]
    Je souhaite savoir si H2 est contenu dans H1.
    J'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Iterator iterD = (Iterator) H1.iterator();
    while(iterD.hasNext())
    {
    if(H1.contains(H2))
    {
    i = i - 1;
    }
    else
    {
    System.out.println("H1 ne contient pas H2");
    }
    }
    Le problème c'est que la boucle si n'est jamais testé.
    Est ce que quelqu'un pourrait m'aider, please.
    Marvin

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 25
    Par défaut
    Je souhaite savoir si H2 est contenu dans H1.
    Parles tu des clés, des valeurs, ou des association valeur-clé ?

    Dans tous les cas il suffit de parcourir H1 et de vérifier que chaque 'valeur' est dans H2. (ou utiliser les méthods contains.... sur les listes)

  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
    ?

    Ça compile pas ton truc : HashMap n'a pas de méthode iterator() ni de méthode contains().

    Pour vérifier si une Map a est contenue dans une Map b, le plus simple est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(b.entrySet().containsAll(a.entrySet()))
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 4
    Par défaut re :
    J'ai fais ce que précise thelvin mais ça ne fonctionne pas non plus (avec des maps). La boucle if n'est toujours pas testée.

    Je souhaite savoir si l'association clé-valeur obtenue dans H2 est bien contenu dans le Hapmap H1.

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 25
    Par défaut
    Je vais répondre à ta question, mais pense à te réorienter, l'informatique n'est absolument pas faîte pour toi ... (ce qui est en aucun cas un jugement de valeur mais un jugement technique) et par expérience je sais que lorsqu'on est mauvais en informatique on le reste toute sa vie. ll y a de beaux cas en entreprise.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for(Object o: h1.leySet()) {
      if(!h2.constainsKey(o) || !h2.get(o).equals(h1.get(o)) return false;
    }
    return true;
    Si une seule 'clé-association' de h1 n'est pas dans h2. Alors on retourne faux.

  6. #6
    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
    Oui enfin, la solution je l'avais déjà donnée, mais en plus court.

    Voici un programme qui prouve que ça marche très bien, dans au moins 4 cas :

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    public static void main(String[] args) {
      Map<Integer, String> container = new HashMap<Integer, String>();
      Map<Integer, String> containee = new HashMap<Integer, String>();
     
      container.put(1, "one");
      container.put(2, "two");
      container.put(3, "three");
     
      containee.put(1, "one");
      check(container, containee);
     
      containee.put(2, "two");
      check(container, containee);
     
      containee.put(3, "three");
      check(container, containee);
     
      containee.put(3, "trois");
      check(container, containee);
    }
     
    private static void check(Map<Integer, String> container, Map<Integer, String> containee) {
      if(container.entrySet().containsAll(containee.entrySet())) {
        System.out.println("Contained");
      } else {
        System.out.println("Not contained");
      }
    }
    Si quelqu'un peut construire un cas où la condition est mal vérifiée, je suis curieux de le voir.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre Expert
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Si quelqu'un peut construire un cas où la condition est mal vérifiée, je suis curieux de le voir.
    Moi, je suis curieux de voir l'implémentation qui a ete faite. Parce que quand je lis le commentaire :
    La boucle if n'est toujours pas testée
    Au vu de ton code, j'ai des doutes sur ce qui a été fait...

  8. #8
    Membre Expert
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Par défaut
    Citation Envoyé par BaBuX Voir le message
    Je vais répondre à ta question, mais pense à te réorienter, l'informatique n'est absolument pas faîte pour toi ... (ce qui est en aucun cas un jugement de valeur mais un jugement technique) et par expérience je sais que lorsqu'on est mauvais en informatique on le reste toute sa vie. ll y a de beaux cas en entreprise.
    bien que ça n'ait rien à voir avec la question je m'inscris en faux contre ce commentaire: il faut laisser aux gens le temps de s'épanouir. On a tous commencé par être "mauvais"! -et on l'est encore de temps en temps!-
    (je parle aussi par expérience pour avoir suivi l'evolution de très nombreuses personnes -il est vrai que pour certains la programmation n'est pas "naturelle" et que pour d'autres elle ne le sera jamais ... mais sur un forum nous devons tous nous venir en aide -avec grâce et compréhension -...)

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

Discussions similaires

  1. Comparaison de deux float
    Par MysticKhal_0 dans le forum C
    Réponses: 5
    Dernier message: 14/09/2012, 01h08
  2. PL/SQL COMPARAISON DE DEUX TABLEAUX APRES BULK
    Par mimi_été dans le forum PL/SQL
    Réponses: 5
    Dernier message: 30/06/2009, 12h14
  3. [langage] Comparaison de deux fichiers
    Par perlgirl dans le forum Langage
    Réponses: 4
    Dernier message: 04/05/2005, 16h05
  4. [SYBASE] Comparaison de deux datetime
    Par paf15 dans le forum Sybase
    Réponses: 1
    Dernier message: 17/04/2005, 16h51
  5. Réponses: 5
    Dernier message: 06/10/2003, 17h49

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