Java HashMap<String,List<String>>() Comparaison
Je me demandais la meilleure façon de comparer ces deux HashMaps. Je veux vérifier si elles sont les mêmes, et si non, quelle est la différence. Si c'est important, alors je me demandais ce que le 2ème a/n'a pas que de la première table de hachage. J'aurai besoin de savoir si on a une clé de l'autre n'est pas, ainsi que la Liste des valeurs des différences par clé. J'espère qu'il y a un moyen simple de cette carte, mais pas sûr. Exemple De Base:
HashMap<String, List<String>> hmOne = new HashMap<String, List<String>>();
List<String>l1 = new ArrayList<String>();
l1.add("one");
l1.add("two");
l1.add("three");
l1.add("four");
l1.add("five");
hmOne.put("firstkey", l1);
l1 = new ArrayList<String>();
l1.add("1");
l1.add("2");
l1.add("3");
l1.add("4");
l1.add("5");
hmOne.put("secondkey", l1);
HashMap<String, List<String>> hmTwo = new HashMap<String, List<String>>();
List<String>l2 = new ArrayList<String>();
l2.add("one");
l2.add("two");
l2.add("four");
l2.add("five");
hmTwo.put("firstkey", l2);
l2 = new ArrayList<String>();
l2.add("1");
l2.add("3");
l2.add("4");
l2.add("5");
hmTwo.put("secondkey", l2);
Merci pour toute aide.
stackoverflow.com/questions/3387155/difference-between-two-maps/...
J'ai écrit ma propre comparaison. Je passe dans les deux hashmaps pour comparer et je retourne de ce que le premier est que la deuxième n'a pas, et vice versa.
je sais qu'il a été un certain temps, mais pourriez-vous..accepter une réponse, ou de poster votre propre solution, une réponse (de préférence)? salutations
J'ai écrit ma propre comparaison. Je passe dans les deux hashmaps pour comparer et je retourne de ce que le premier est que la deuxième n'a pas, et vice versa.
je sais qu'il a été un certain temps, mais pourriez-vous..accepter une réponse, ou de poster votre propre solution, une réponse (de préférence)? salutations
OriginalL'auteur Green | 2011-10-19
Vous devez vous connecter pour publier un commentaire.
goyave a
Cartes.différence(map1, map2)
Lists.newArrayList("1", "2", "3", "4", "5")
, qui permettra à l'origine du code beaucoup plus court qu'il ne l'est maintenant.Merci pour cette. cool lib google a fait là..!
OriginalL'auteur Bozho
HashMap.equals
est vous dire si elles sont identiques (même des clés et des valeurs) mais pour le reste, vous aurez à rouler soi-même.Vous aurez besoin pour effectuer une itération de la
keyset()
d'unHashMap
, le chercher dans lekeySet()
de l'autre et si le retrouve ensuite comparer les valeurs.Ensuite, vous aurez à faire l'inverse, à la recherche de clés dans la seconde qui n'existent pas dans le premier. Vous pouvez probablement utiliser
Set
méthodes pour cela.mapOne.entrySet()
:.containsAll(mapTwo.entrySet())
/.removeAll(mapTwo.entrySet())
/.retainAll(mapTwo.entrySet())
que l'itération manuellement. Peut-être avec un clone demapOne
étant donné que les méthodes destructives.J'ai mentionné les méthodes set pour inverser mais pas pour d'abord parce que la valeur de comparaison est également nécessaire.
C'est pourquoi vous utilisez
.entrySet()
, pas.keySet()
.Oups oui. Désolé, j'étais aveugle plus tôt.
OriginalL'auteur Miserable Variable
Sur le dessus de ma tête, vous pouvez tout d'abord utiliser la table de hachage.equals() pour savoir si elles sont différentes, et puis obtenir le jeu de clés de chaque table de hachage et de les comparer:
Quel est le moyen le plus rapide pour comparer les deux jeux en Java?
Puis une fois que vous avez les différences dans les touches, vous pouvez répéter le processus sur votre valeur les collections.
OriginalL'auteur SuperTron
Vous savez que la Carte est .méthode equals() est vous dire si deux Cartes sont égales, droit?
Si elles ne sont pas égaux, vous allez avoir à analyser et comprendre les différences sur votre propre.
OriginalL'auteur Bob Kuhar