2010-02-18 7 views
6

J'ai deux HashMaps: FOO & BAR.Comparaison de HashMaps en Java

HashMap FOO est un surensemble de HashMap BAR.

Comment puis-je savoir quelles «clés» manquent dans HashMap BAR (c'est-à-dire dans FOO mais pas dans BAR)?

Répondre

7

Si vous utilisez google-collections (et de façon réaliste, je pense qu'il devrait être sur le chemin de classe de plus ou moins tous les projets Java non trivial), il est juste:

Set<X> missing = Sets.difference(foo.keySet(), bar.keySet(); 
+0

Vous pouvez également utiliser 'MapDifference mapDiff = Maps.difference (FOO, BAR);' et examiner l'objet résultant pour une description complète de la différence entre les cartes. –

+0

Oh wow. Je n'ai pas encore regardé MapDifference, merci Kevin. – Cowan

13
Set missing = new HashSet(foo.keySet()); 
missing.removeAll(bar.keySet()); 
+1

+1 pour faire une nouvelle ensemble. foo.keySet(). removeAll() modifiera réellement la carte foo. – Jherico

Questions connexes