Quando viene chiamato LinkedHashMap.keySet(), l'ordine del Set restituito sarà uguale all'ordine in cui sono state aggiunte le chiavi?Java LinkedHashMap mantiene l'ordine delle chiavi?
risposta
Sì.
Vedi: LinkedHashMap:
Questa lista collegata definisce l'iterazione ordinamento, che normalmente è dell'ordine in cui le chiavi sono state introdotte nel mappa (inserimento-ordine).
e dalla documentazione HashMap#keySet:
Il set [restituito] è sostenuta dalla mappa, quindi modifiche alla mappa si riflettono set, e viceversa.
@ Tom ringrazia, non sono ancora convinto che ciò sia esplicito. Perché LinkedHashMap.keySet() non restituisce una sottoclasse di Set con un ordine fisso? – Armand
Perché se restituisce un SortedSet, allora LinkedHashMap aggiungerebbe il requisito che le sue chiavi siano di un tipo che implementa Comparable o che sia fornita una funzione comparatore. Questo NON è richiesto dalla mappa. Controlla la documentazione SortedSet: http://download.oracle.com/javase/6/docs/api/java/util/SortedSet.html. Non avere questo requisito consente di utilizzare anche chiavi che non implementano Comparable per essere utilizzate in una LinkedHashMap, che è il caso più generale. L'implementazione di LinkedHashMap potrebbe anche restituire un SortedSet se le sue chiavi sono comparabili, ma semplicemente non è OBBLIGATORIO. –
Naturalmente, il contratto di LinkedHashMap dice che mantiene l'ordinamento INSERTION, che potrebbe non essere l'ordinamento NATURALE. Quindi in tal caso, un SortedSet non funzionerebbe affatto - i tasti semplicemente non sarebbero ordinati in quel modo. –
Yes. L'eccezione è che quando una chiave viene reinserita, appare nell'ordine in cui è stata inserita per la prima volta nell'elenco.
+1 buona presa su quella cassa d'angolo. –
In realtà, l'eccezione è quando la chiave è ** reinserita **, non cancellata e riutilizzata.Il caso è quando chiamate 'put (chiave, valore)' per una chiave che era già nella mappa. (Il javadoc lo spiega chiaramente). –
- 1. Shrink LinkedHashMap in Java
- 2. Equivalente per LinkedHashMap in Python
- 3. Informazioni su acessOrder LinkedHashMap Implementazione in java
- 4. Raccolta chiavi/valori che mantiene l'ordine
- 5. L'ordine è garantito per la restituzione di chiavi e valori da un oggetto LinkedHashMap?
- 6. serialize/deserialize a LinkedHashMap (android) java
- 7. Implementazione di una LinkedHashMap simultanea
- 8. LinkedHashMap firma
- 9. Android - mantiene aperto il menu delle opzioni
- 10. equivalente C# di LinkedHashMap
- 11. Elenco chiavi UIManager Java
- 12. LinkedHashMap emissione ordine
- 13. Anche EntrySet() in LinkedHashMap garantisce l'ordine?
- 14. Java Swing ActionMap chiavi
- 15. Ottieni l'elemento successivo in LinkedHashMap?
- 16. java map con chiavi duplicate
- 17. Usa LinkedHashMap per implementare la cache LRU
- 18. Recupero delle chiavi di fila Cassandra
- 19. Impossibile aprire il contenitore delle chiavi RSA
- 20. EJB3NamingStrategy vs MigliovedNamingStrategy Denominazione delle chiavi esterne
- 21. Protezione delle chiavi crittografiche nella RAM?
- 22. emacs, flyspell, disattivare "C-" legatura delle chiavi
- 23. sql scambia i valori delle chiavi primarie
- 24. Limitazioni delle chiavi di PHP associative (indici)?
- 25. Conteggio delle chiavi specifico in json jquery
- 26. Memorizzazione delle chiavi di crittografia - best practice?
- 27. Ordina array e mantenere valori delle chiavi
- 28. Mappature delle chiavi nel client RealVNC
- 29. Eliminazione del terminale delle chiavi SSH
- 30. L'ordine delle annotazioni Java è persistente?
Per quelli che provengono da PHP, permettimi di aiutarli sottolineando che un LinkedHashMap si comporta in modo molto simile a un array PHP. –