2010-02-18 18 views
6

İki HashMaps var: FOO & BAR.Java'da HashMaps'i Karşılaştırma

HashMap FOO, HashMap BAR'ın bir üst kümesidir.

HashMap BAR'da "anahtarlar" ın niçin eksik olduğunu nasıl öğrenirim (örn. FOO'da var, ancak BAR değil)?

cevap

7

Eğer kullanıyorsanız google-collections (ve gerçekçi bunu az çok her önemsiz olmayan bir Java projesi üzerinde sınıf olması gerektiğini düşünüyorum) bu sadece:

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

Ayrıca, "MapDifference mapDiff = Maps.difference (FOO, BAR);" işlevini de kullanabilirsiniz ve sonuçta ortaya çıkan nesnenin, haritaların nasıl farklı olduğuna ilişkin ayrıntılı bir açıklaması için de inceleyebilirsiniz. –

+0

Oh vay. Daha önce MapDifference'a bakmadığın için teşekkürler Kevin. – Cowan

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

+1 yeni yapım ayarlayın. foo.keySet(). removeAll() aslında foo haritasını değiştirecektir. – Jherico