Questa è una domanda molto semplice, io non sono così bravo con Java. Ho una mappa e voglio ottenere una lista o qualcosa dei tasti in ordine ordinato in modo da poter scorrere su di loro.Come posso ordinare le chiavi di una mappa in Java?
risposta
Utilizzare un TreeMap
, che è un'implementazione dell'interfaccia SortedMap
. Presenta le sue chiavi in ordine ordinato.
Map<String, Object> map = new TreeMap<String, Object>();
/* Add entries to the map in any order. */
...
/* Now, iterate over the map's contents, sorted by key. */
for (Map.Entry<String, ?> entry : map.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
Se si sta lavorando con un'altra implementazione Mappa che non è ordinato come ti piace, si può passare al constructor di TreeMap
per creare una nuova mappa con le chiavi ordinate.
void process(Map<String, Object> original) {
Map<String, Object> copy = new TreeMap<String, Object>(original);
/* Now use "copy", which will have keys in sorted order. */
...
}
A TreeMap
funziona con qualsiasi tipo di chiave che implementa l'interfaccia Comparable
, mettendoli nel loro ordine "naturale". Per le chiavi che non sono Comparable
o il cui ordinamento naturale non è quello che ti serve, puoi implementare il tuo Comparator
e specificarlo nello constructor.
Hai diverse opzioni. Elencati in ordine di preferenza:
- Utilizzare un
SortedMap
:
SortedMap<whatever> myNewMap = new TreeMap<whatever>(myOldMap);
Questo è di gran lunga preferibile se si vuole scorrere più di una volta. Mantiene le chiavi ordinate in modo da non doverle ordinare prima di iterare. - Non c'è nessun # 2.
- Non c'è nessun # 3.
SortedSet<whatever> keys = new TreeSet<whatever>(myMap.keySet());
List<whatever> keys = new ArrayList<whatever>(myMap.keySet()); Collections.sort(keys);
Gli ultimi due si ottiene ciò che si vuole, ma deve essere utilizzato solo se desideri solo per scorrere una volta e poi dimenticare tutto.
Nel passaggio 4, è anche possibile creare un set di alberi (un set ordinato) anziché un elenco, che consente di evitare di effettuare una chiamata esplicita a sort(). –
@David: Ci ho pensato, ma per qualche ragione ho dimenticato che era possibile iterare su un Set. Tuttavia, richiede sempre lo smistamento. –
hmm mi piace il # 4. perché richiede più ordinamento rispetto al # 1?avrei pensato che fosse altrettanto buono –
È possibile creare una raccolta ordinata durante l'iterazione, ma è più sensato avere una mappa ordinata in primo luogo. (Come è già stato suggerito)
Tutti uguali, ecco come lo si fa.
Map<String, Object> map;
for(String key: new TreeSet<String>(map.keySet()) {
// accessed in sorted order.
}
- 1. Freccette - Come ordinare le chiavi della mappa
- 2. Come posso ordinare una mappa STL in base al valore?
- 3. Come ordinare le proprietà in java?
- 4. Come posso ordinare una mappa con il suo parametro .second
- 5. Scala - Converti le chiavi da una mappa in minuscolo?
- 6. Ottieni un'enumerazione (per le chiavi) di una mappa (HashMap) in Java?
- 7. Qualunque svantaggio nell'usare oggetti arbitrari come chiavi Mappa in Java?
- 8. Elixir: come filtrare una mappa con le chiavi
- 9. Come posso definire una mappa con le chiavi arbitrarie in un modello Swagger
- 10. iterare su tutte le chiavi di una mappa
- 11. immutable.js ottenere le chiavi di mappa/hash
- 12. Come posso ordinare le matrici in una raccolta?
- 13. Come posso ordinare le date in Perl?
- 14. Come rimuovere più chiavi da una mappa?
- 15. Come ordinare l'hash perl sui valori e ordinare le chiavi in modo corrispondente (in due matrici)?
- 16. Ordinare la mappa <String, Object> con le chiavi con IgnoreCase?
- 17. Come posso avere una HashMap con chiavi univoche in java?
- 18. Come ordinare una mappa di tre basata sui suoi valori?
- 19. come posso ordinare NSMutableDictionary con il valore delle chiavi?
- 20. Perché posso utilizzare le stringhe come chiavi in una HashMap?
- 21. Come convertire le chiavi della mappa in array?
- 22. Le chiavi della mappa sono oggetti o non in Groovy?
- 23. Come scambiare elegantemente chiavi e valori in una mappa
- 24. Scambio di chiavi e valori di una mappa in C++
- 25. Mappa chiavi multiple in C++
- 26. Come ordinare l'elenco con chiavi duplicate?
- 27. Mappa Java con chiavi Integer: come vengono confrontati i tasti?
- 28. Come ordinare una ricerca?
- 29. Prendi le chiavi dal HashMap in Java
- 30. Ordinare una lista multidimensionale per un numero variabile di chiavi
Il codice che sto consumando mi fornisce un oggetto Mappa, quindi come posso convertirlo in una TreeMap o utilizzare una TreeMap per eseguire l'ordinamento? – Bialecki
È possibile creare la TreeMap utilizzando un costruttore il cui parametro è qualsiasi Mappa. Inoltre, congratulazioni erickson (presumo, dal momento che hai solo 5 ripetizioni da 10k). –
Ding! erickson sale di livello. –