rayskelton
asked on
Options for iterating through maps
I am using an iterator to loop through a map to print it’s contents. Are there other simpler options for getting an iterator for a map, other than my below example?
Set entries = map.entrySet();
Iterator iterator = entries.iterator();
while (iterator.hasNext()) {
Map.Entry entry = (Map.Entry)iterator.next() ;
System.out.println("Key:" + entry.getKey() + " : " + entry.getValue());
}
Set entries = map.entrySet();
Iterator iterator = entries.iterator();
while (iterator.hasNext()) {
Map.Entry entry = (Map.Entry)iterator.next()
System.out.println("Key:" + entry.getKey() + " : " + entry.getValue());
}
You can print the whole map by doing:
System.out.println(map);
Which will print it in this format "[key1=value1, key2=value2,... ]"
System.out.println(map);
Which will print it in this format "[key1=value1, key2=value2,... ]"
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
>> Are there other simpler options for getting an iterator for a map
objects, Is your suggestion simpler then the one provided rayskelton
objects, Is your suggestion simpler then the one provided rayskelton
ASKER
Of the two available options, is there a performance hit for one against the other?
// get iterator of map through map.entries
Set entries = map.entrySet();
Iterator iterator = entries.iterator();
while (iterator.hasNext()) {
Map.Entry entry = (Map.Entry)iterator.next() ;
// dest.write("Key:" + entry.getKey() + " : Message:" + entry.getValue() + "\n");
dest.write(entry.getKey() + " :: " + entry.getValue() + "\n");
// dest.write("Message:" + entry.getValue() + "\n");
}
Iterator iterator1 = map.keySet().iterator();
dest.write("\nOption 2 for map writing\n");
while (iterator1.hasNext()) {
Object key = iterator1.next();
Object value = map.get(key);
dest.write(key + " :: " + value + "\n");
}
// get iterator of map through map.entries
Set entries = map.entrySet();
Iterator iterator = entries.iterator();
while (iterator.hasNext()) {
Map.Entry entry = (Map.Entry)iterator.next()
// dest.write("Key:" + entry.getKey() + " : Message:" + entry.getValue() + "\n");
dest.write(entry.getKey() + " :: " + entry.getValue() + "\n");
// dest.write("Message:" + entry.getValue() + "\n");
}
Iterator iterator1 = map.keySet().iterator();
dest.write("\nOption 2 for map writing\n");
while (iterator1.hasNext()) {
Object key = iterator1.next();
Object value = map.get(key);
dest.write(key + " :: " + value + "\n");
}
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
I use the following snippet so often that I've made it a macro-template in my JBuilder:
Map.Entry entry = null;
for (Iterator iter = map.entrySet().iterator(); iter.hasNext();) {
entry = (Map.Entry)iter.next();
Object key = entry.getKey();
Object value = entry.getValue();
// Do whatever with the key and value..
}
Map.Entry entry = null;
for (Iterator iter = map.entrySet().iterator();
entry = (Map.Entry)iter.next();
Object key = entry.getKey();
Object value = entry.getValue();
// Do whatever with the key and value..
}
Doubt there would be any significant performance difference, suggest you benchmark if you are dealing with large sets and performance is an issue
ASKER
thanks for all advice
System.out.println(iterato