Win a copy of Mesos in Action this week in the Cloud/Virtualizaton forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Why use Map.entrySet()

 
Zhixiong Pan
Ranch Hand
Posts: 239
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi ranchers,
In what cases, will Map.entrySet() be used? Thanks.
 
Deepak Bala
Bartender
Posts: 6663
5
Firefox Browser Linux MyEclipse IDE
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I have not personally used this myself. Each entry in the Map is represented by a Map.Entry, and the entry set can be used to iterate through the entries. Useful if you need to access each entry as a whole.
 
Campbell Ritchie
Sheriff
Pie
Posts: 48954
60
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I think I have used it and John Meyers is correct. I am writing from memory, but it goes something like this:-
It was the only way I could find of gaining access to the "V" entries in a HashMap in order without knowing the "K" values. Of course, you can get access to the "K" values using getKey() instead of getValue().

I think that is how it is supposed to work.
 
Jim Yingst
Wanderer
Sheriff
Posts: 18671
  • Likes 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
If you just need keys, use keySet(). If you just need values, use values(). If you're going to use keys and values in your subsequent code, then you're best off using entrySet().

I frequently see people do this without entrySet(), and it usually looks something like this:

This works, but it's making the JVM do extra work for no good reason. Every time you call get() you're making the JVM spend time doing a hashcode lookup, or navigating a tree and evaluating a comparator. These operations may be fast, or not, but why do them if you don't have to? A Map.Entry gives you both key and value, together, in the most efficient manner possible.

Under JDK 5 and later it's a little nicer:
 
Henry Wong
author
Marshal
Pie
Posts: 21117
78
C++ Chrome Eclipse IDE Firefox Browser Java jQuery Linux VI Editor Windows
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Originally posted by Jim Yingst:

I frequently see people do this without entrySet(), and it usually looks something like this:



I do this a *lot*. I don't really know why -- maybe it has to do with muscle memory. It does seem to be a habit that I can't seem to break.

So, I guess my response to "Why use Map.entrySet()" is ... I don't, but I should...

Henry
 
Bear Bibeault
Author and ninkuma
Marshal
Pie
Posts: 64837
86
IntelliJ IDE Java jQuery Mac Mac OS X
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I must be ahead of the curve . I use it all the time!
 
Mr. C Lamont Gilbert
Ranch Hand
Posts: 1170
Eclipse IDE Hibernate Ubuntu
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Whenever I am getting all the data out of the Map I use entrySet. I do use it a lot. Especially when copying the Map, or converting it into a different format. Most recently I created a database dump to xml and I had to get all the contents of a Map. I used entryset.
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic