2010-02-18 13 views
6

Mam dwa HashMaps: FOO & BAR.Porównywanie HashMaps w Javie

HashMap FOO to nadzbiór zestawu HashMap BAR.

Jak mogę się dowiedzieć, jakich "kluczy" brakuje w pliku HashMap BAR (np. Istnieje w FOO, ale nie BAR)?

Odpowiedz

7

Jeśli używasz google-collections (i realnie myślę, że powinno być na ścieżce klasy o mniej lub bardziej każdego projektu Java nietrywialne) to po prostu:

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

Można również użyć 'MapDifference mapDiff = Maps.difference (FOO, BAR);' i zbadać wynikowy obiekt, aby uzyskać pełny opis różnic w mapach. –

+0

Oh wow. Nie patrzyłem wcześniej na MapDifference, dziękuję Kevin. – Cowan

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

+1 do produkcji nowy zestaw. foo.keySet(). removeAll() faktycznie zmodyfikuje mapę foo. – Jherico