Geeft entrySet() in een LinkedHashMap ook een bestelling?

Ik gebruik een linkedHashMap om de volgorde te garanderen wanneer iemand deze probeert te openen. Als het echter tijd is om het te herhalen, garandeert het gebruik van entrySet() om sleutel/waarde-paren te retourneren ook de volgorde? Er worden geen wijzigingen aangebracht tijdens het herhalen.

BEWERK:Zijn er ook nadelige effecten van het doorlopen van de kaart door de toetsen te doorlopen en get te bellen?


Antwoord 1, autoriteit 100%

Volgens de Javadocs, ja .

Deze implementatie verschilt van HashMapdoordat het een dubbel gekoppelde lijst bijhoudt die door al zijn items loopt. Deze gekoppelde lijst definieert de iteratievolgorde, wat normaal gesproken de volgorde is waarin sleutels in de kaart zijn ingevoegd (insertion-order).

Wat betreft de bewerking, nee, het zou prima moeten werken. Maar de invoerset is iets sneller omdat het de overhead vermijdt van het opzoeken van elke toets op de kaart tijdens iteratie.


Antwoord 2, autoriteit 4%

Als u zeker weet dat er tijdens de iteratie geen wijzigingen worden aangebracht, is de juiste volgorde met entrySet()gegarandeerd, zoals vermeld in de API.


Antwoord 3, autoriteit 2%

Deze gekoppelde lijst definieert de iteratievolgorde, wat normaal gesproken de volgorde is waarin sleutels in de kaart zijn ingevoegd (invoegvolgorde). Houd er rekening mee dat de invoegvolgorde niet wordt beïnvloed als een sleutel opnieuw in de kaart wordt ingevoegd. (Een sleutel k wordt opnieuw ingevoegd in een map m als m.put(k, v) wordt aangeroepen wanneer m.containsKey(k) true zou retourneren onmiddellijk voorafgaand aan de aanroep.)

Other episodes