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

avec Java Discussion :

Comparer 2 HashMap qui ont les mêmes keys


Sujet :

avec Java

  1. #1
    Invité
    Invité(e)
    Par défaut Comparer 2 HashMap qui ont les mêmes keys
    Bonjour,

    J'ai 2 Hashmap sous la forme MAP1<String, Objet> MAP2<String, Objet>, les keys sont les mêmes pour les 2 Hashmap et les différences sont au niveau des objets.

    J'aimerais comparer les 2 MAP et mettre dans une liste la key quand il y a une différence entre les 2 objets.

    Niveau complexité quel est le meilleur moyen ? Et comment puis-je faire ça ?

    Un exemple de ce que je veux :

    MAP 1 =  Key : 1 | Valeur :: Nom : Dupont  Prenom : Tony    Age : 15
          =  Key : 2 | Valeur :: Nom : Socle   Prenom : Eric    Age : 17
          =  Key : 3 | Valeur :: Nom : Lou     Prenom : Sophie  Age : 17
    
    MAP 2 =  Key : 1 | Valeur :: Nom : Dupont  Prenom : Tony    Age : 15
          =  Key : 2 | Valeur :: Nom : Socle   Prenom : Eric    Age : 15
          =  Key : 3 | Valeur :: Nom : Lou     Prenom : Sophie  Age : 17
    Résultat que je souhaite :
    Key : 2   
    MAP 1 = Valeur :: Nom : Socle    Prenom : Eric    Age : 17
    MAP 2 = Valeur :: Nom : Socle    Prenom : Eric    Age : 15
    ATTRIBUT DIFFERENT = AGE
    Merci d'avance
    Dernière modification par Invité ; 19/05/2021 à 19h59. Motif: Mise en forme

  2. #2
    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
    Hello,

    je ne pense pas qu'il y ait lieu de se soucier de complexité. Il me semble que le faire "naturellement" sera aussi bon qu'on puisse faire.

    Commence par nous exposer tes idées sur une manière de faire.

    Conseil annexe : tu devrais vraiment utiliser des exemples plus simples.

    MAP 1:
    Key : 1 | pommes
    Key : 2 | peches
    Key : 3 | poires

    MAP 2:
    Key : 1 | pommes
    Key : 2 | scoubidous
    Key : 3 | poires

    Résultat voulu :
    Key : 2
    MAP 1 = peches
    MAP 2 = scoubidous
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    for (String cle: map_1.keySet()){
    		      if (map_2.containsKey(cle)) {
     
    		          difList = map_1.get(cle).test(map_2.get(cle));
     
    		      	  resultat.put(cle, difList);
     
    		          }
    J'ai également surchargé la méthode equals (je l'ai appelé test) de la classe de mon objet, je mets dans la liste les attributs qui sont diffèrents

  4. #4
    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 m'a l'air correct.

    Peut-être respecter les conventions de nommage, et c'est bizarre une méthode test() comme ça.

    Citation Envoyé par JeuneCodeur Voir le message
    J'ai également surchargé la méthode equals (je l'ai appelé test) de la classe de mon objet
    Oui du coup c'est pas surcharger. Surcharger ça veut dire faire une autre méthode de même nom (mais qui prend des paramètres différents, sinon forcément ça fait la même méthode, pas une autre).

    C'est une idée bizarre, pourquoi faire ça ? equals() existe pour qu'on s'en serve.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Invité
    Invité(e)
    Par défaut
    C'est une idée bizarre, pourquoi faire ça ? equals() existe pour qu'on s'en serve.
    La méthode equals() qui génère mon IDE ecplise retourne un boolean, moi je veux savoir sur quel attribut il y a un changement pas seulement un true ou false.

    Ça m'a l'air correct.
    Il va sûrement avoir plus de 50000 objets dans mes MAP, ca va pas poser de problème ? C'est la bonne méthode ?

    Peut-être respecter les conventions de nommage, et c'est bizarre une méthode test() comme ça.
    Effectivement, quand je fais des tests, je donne pas des nom très judicieux a mes méthodes et variables

  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
    Citation Envoyé par JeuneCodeur Voir le message
    Il va sûrement avoir plus de 50000 objets dans mes MAP, ca va pas poser de problème ?
    50000, tant qu'on ne fait pas dans l'exponentiel très lourd, ce n'est rien pour un ordinateur.

    Citation Envoyé par JeuneCodeur Voir le message
    C'est la bonne méthode ?
    De toute façon je doute qu'il y en ait qui consomment moins.

    Tu pourrais éventuellement éviter de chercher les valeurs avec Map.get() :

    - tu ferais une itération sur l'entrySet() de la Map1 au lieu du keySet(), ce qui te permet d'avoir la valeur associée à la clé directement
    - tu ferais un get(cle) sur Map2 sans faire de containsKey(), et tu vérifierais que c'est pas null. Ça évite de la chercher deux fois.

    Mais ce sont là des micro-optimisations. Faire comme ça ne change pas la complexité de l'algorithme.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. [XL-2010] Rassembler des cellules qui ont les mêmes données
    Par sticks_678 dans le forum Excel
    Réponses: 4
    Dernier message: 03/01/2017, 16h38
  2. Colorier les cellules qui ont les mêmes lignes VBA
    Par rihab92 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 29/04/2016, 16h05
  3. Réponses: 4
    Dernier message: 13/06/2011, 17h41
  4. [XL-2003] supprimer des lignes qui ont les même valeurs
    Par Neptune64 dans le forum Excel
    Réponses: 1
    Dernier message: 09/08/2009, 00h30
  5. Réponses: 19
    Dernier message: 21/10/2008, 18h39

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