Map.entrySet vs Map.keySet

Map.entrySet vs Map.keySet

  • entrySet

    Stimmen: 3 50,0%
  • keySet

    Stimmen: 3 50,0%
  • wasn das

    Stimmen: 0 0,0%

  • Anzahl der Umfrageteilnehmer
    6
Status
Nicht offen für weitere Antworten.
B

bygones

Gast
huhu,

wer benutzt was ?
gibt es signifikante performance unterschiede ?
ist eins mehr zu empfehlen ?

also
Java:
Map<String, String> map = // woher auch immer
for(String key : map.keySet()) {
   String value = map.get(key);
}

gegen
Java:
Map<String, String> map = // woher auch immer
for(Map.Entry<String,String> entry : map.entrySet()) {
   String value = entry.getValue();
}

interessiert mich, da FindBugs es vorschlaegt, man aber im Netz fast nur dazu FindBugs informationen findet....
 

Atze

Top Contributor
finde entryset passender, falls man nicht nur durch das set will zwecks einer sortierung. wenn ich eh beide werte haben will, warum dann erst alle keys holen, und damit nochmal die werte? kann doch gleich alles rausholen.

für ein komplettes auslesen der map würde ich auf jeden fall entryset wählen, tut sich performancetechnisch wohl rei garnix, als wenn ich alle keys hole und dann nochmal mit jedem key den wert. ist vielleicht sogar schneller.

wenn ich allerdings nur sdie keys brauche, diese erst sortieren oder reduzieren will, und dann nur einen oder ein paar werte brauche, dann natürlich keyset
 

Marco13

Top Contributor
EDIT: Siehe unten!

Was empfiehlt FindBugs denn? Ich würde sagen: Wenn man die Keys braucht, nimmt man KeySet, und wenn man die Entries braucht, nimmt man EntrySet :D Sowas wie
Code:
for (Key key : map.keySet())
{
    Value value = map.get(value);
    soSomethingWith(key, value);
}
wäre natürlich sinnlos, aber ... alles andere (d.h. die Performance) hängt IMHO von der konkreten Implementierung der Map ab...


EDIT: Ah, da wurde der erste Beitrag noch editiert - aber meine Antwort passt wohl immernoch :)
 
B

bygones

Gast
es geht hier wirklich um das komplette auslesen einer Map - d.h. man braucht im Grunde die Values.

die Map implementierung ist unbekannt
 
S

SlaterB

Gast
KeySet ist schöner, EntrySet nur, wenn es sich nicht vermeiden läßt, etwa für Sortierung

public static <T extends Comparable<T>, U>List<Entry<T, U>> getSortedEntryList(Map<T, U> _map)
{
..
}
;)
 
M

maki

Gast
es geht hier wirklich um das komplette auslesen einer Map - d.h. man braucht im Grunde die Values.

die Map implementierung ist unbekannt
In diesem Falle ist eindeutig das EntrySet zu bevorzugen, Findbugs meckert das KeySet in solchen Fällen übrigens auch an ;)

nachtrag: Ooops, da smit FindBugs hast du ja auch schon gemerkt.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben