A friendly place for Java greenhorns!
Java
Ranch
»
JavaRanch Saloon
Search
|
FAQ
|
Recent Topics
|
Hot Topics
Register
/
Login
Java
Ranch
»
Forums
»
Java
»
Java in General
Author
comparing keys of two hashmaps
Mohit Sinha
Ranch Hand
Joined: Nov 29, 2004
Messages: 108
posted
Feb 08, 2010 21:20:50
Hi All,
I want to identify the identical keys amongst two haspmaps (H1 and H2).
Also I need to identify elements of H1 not available in H2 and vice versa.
Currently I am using the
HashMap
interface containsKey method but have to do something like this
- loop throught all keys of H1 and H2.containsKey(h1_key)
- loop throught all keys of H2 and H1.containsKey(h2_key)
Ist there a better view to implement the same.
Thanks
Pat Farrell
Ranch Hand
Joined: Aug 11, 2007
Messages: 2259
posted
Feb 08, 2010 21:35:57
If you use the Google Collections package, it has functions to do the usual intersection, union, and difference functions for sets.
Vivek K Singh
Ranch Hand
Joined: Dec 22, 2009
Messages: 74
posted
Feb 08, 2010 23:05:32
You do not need to loop thru both the maps, you can do something like:
for (Map.Entry<String, String> me : hashmap1.entrySet()) // assuming your map is Map<String, String> if(hashmap2.containsKey(me.getKey())) System.out.println("Found Duplicate -> " + me.getKey());
This will get all keys from the hashmap1 and compare to the hashmap2 and print duplicates...
This message was edited 1 time. Last update was at
Feb 08, 2010 23:06:27
by Vivek K Singh
SCJP 6
Rob Prime
Bartender
Joined: Oct 27, 2005
Messages: 8837
posted
Feb 09, 2010 01:31:50
Or use keySet() in combination with the bulk operators:
// union Set<String> union = new HashSet<String>(h1.keySet()); union.addAll(h2.keySet()); // h1 - h2 Set<String> diff1 = new HashSet<String>(h1.keySet()); diff1.removeAll(h2.keySet()); // h2 - h1 Set<String> diff2 = new HashSet<String>(h2.keySet()); diff1.removeAll(h1.keySet()); // intersection Set<String> intersect = new HashSet<String>(h1.keySet()); intersect.retainAll(h2.keySet());
SCJP 1.4 - SCJP 6 - SCWCD 5
How To Ask Questions
How To Answer Questions
Java
Ranch
»
Forums
»
Java
»
Java in General
All times are in JavaRanch time: GMT-6 in summer, GMT-7 in winter