L’ordinamento hashmap in base alle chiavi

Ho il seguente hashmap in java:

{B046=0.0, A061=3.0, A071=0.0, B085=0.0, B075=3.0, B076=9.0, B086=3.0, B095=0.0, B096=0.0, A052=0.0, B066=0.0, B056=9.0, B065=0.0, B055=9.0}

Come devo andare sull’ordinamento la hashmap tale che l’Alfabeto, seguita dai dati numerici vengono presi in considerazione?

Risultante hashmap dovrebbe assomigliare a questa:

{A052=0.0,A061=3.0,A071=0.0,B046=0.0,B055=9.0,B056=9.0,B065=0.0,B066=0.0,B075=3.0,B076=9.0,B085=0.0,B086=3.0,B095=0.0,B096=0.0}

Apprezzare l’aiuto!

  • hashmap è per la ricerca. Si hash cose. Non mantenere l’ordine.
  • anche chiesto che?
InformationsquelleAutor user1008697 | 2011-10-22



8 Replies
  1. 224

    Utilizzare ordinati TreeMap:

    Map<String, Float> map = new TreeMap<>(yourMap);

    Si metterà automaticamente voci ordinate dai tasti. Penso che naturale String di ordinazione va bene nel tuo caso.

    Nota che HashMap a causa di ricerca di ottimizzazioni non preservare l’ordine.

    • Ciao @Tomasz Nurkiewicz Come posso ottenere l’ordine inverso?
    • Posso applicare la mia comparatore
    • Ottima Soluzione ! C’è un prob con 2 cifre nos , l’ordinamento diventa 1, 10, 11,12,2,3,4,5 . C’è qualche soluzione per questo ?
  2. 24

    Uso di un diagramma ad albero con un costume di comparatore.

    class MyComparator implements Comparator<String>
        {
            public int compare(String o1,String o2)
            {
                //Your logic for comparing the key strings
            }
        }
    
    TreeMap<String, Float> tm = new TreeMap<String , Float>(new MyComparator());

    Come si aggiungono nuovi elementi, essi saranno ordinati automaticamente.

    Nel tuo caso, potrebbe anche non essere necessario realizzare un comparatore poiché la Stringa di ordinazione può essere sufficiente. Ma se si desidera implementare casi particolari, come minuscole alphas appaiono prima superiore, o di trattare i numeri in un certo modo, utilizzare il comparatore.

  3. 11

    TreeMap è la vostra scommessa migliore per questo tipo di ordinamento (Naturale). TreeMap naturalmente ordina secondo le chiavi.

    HashMap non conservare inserimento dell’ordine, né si ordina la mappa. LinkedHashMap mantiene l’ordine di inserzione, ma non ordina la mappa automaticamente. Solo TreeMap in Map interfaccia sorta di mappa in base all’ordine naturale (Numeri primi, maiuscole dell’alfabeto secondo, minuscole dell’alfabeto ultimo).

  4. 5

    Utilizzare un Diagramma ad albero, pur avendo una mappa “sembrare” è un po ‘ nebuloso,–si possono anche ordinare le chiavi, sulla base di criteri e scorrere la mappa, il recupero di ogni oggetto.

  5. 3

    Basta usare un TreeMap. Implementa il SortedMap interfaccia, e quindi ordina automaticamente le chiavi in esso contenute. Le chiavi possono essere ordinati in ordine alfabetico per ottenere il risultato desiderato, così non hai nemmeno bisogno di fornire un termine di confronto.

    Hashmap non sono mai ordinate. L’unica cosa che si coulkd che fare con una HashMap è avere tutte le chiavi, e li memorizza in un insieme ordinato o in un Elenco, e ordinare l’Elenco.

  6. 3

    Utilizzando il TreeMap è possibile ordinare la Mappa.

    Map<String, String> map = new HashMap<String, String>();        
    Map<String, String> treeMap = new TreeMap<String, String>(map);
    //show hashmap after the sort
    for (String str : treeMap.keySet()) {
        System.out.println(str);
    }
  7. 3

    È possibile utilizzare TreeMap che consente la memorizzazione di valori ordinati in forma.

    Map <String, String> map = new TreeMap <String, String>();
  8. 0

    Diagramma ad albero ordina automaticamente in ordine crescente. Se si desidera ordinare in ordine decrescente, utilizzare il codice riportato di seguito:

    Copiare e incollare il seguente codice all’interno della classe e al di fuori della principale metodo di esecuzione:

    static class DescOrder implements Comparator<String> {
        @Override
        public int compare(String o1, String o2) {      
            return o2.compareTo(o1);
        }
        }

    Quindi nella tua logica:

    TreeMap<String, String> map = new TreeMap<String, String>(new DescOrder());
    map.put("A", "test1");
    map.put("C", "test3");
    map.put("E", "test5");
    map.put("B", "test2");
    map.put("D", "test4");

Lascia un commento