Avatar billede madox Nybegynder
09. maj 2003 - 19:32 Der er 5 kommentarer og
1 løsning

Sortering af keys fra hashtable (alfabetisk)

Jeg har en hasttabel som fx kan indeholde {"xjk"="A","kjh"="2","ahj"="p"} osv. Jeg skal så udskrive hashtabellens indhold således:
hjk = A
kjh = 2
ahj = p
osv
men hvordan kan jeg sortere disse data så der kommer til at stå:
ahj = p
hjk = A
kjh = 2
Avatar billede arne_v Ekspert
09. maj 2003 - 19:39 #1
Prøv og brug Collections.synchronizedSortedMap
Avatar billede arne_v Ekspert
09. maj 2003 - 19:43 #2
Ups. Duer ikke. Glem det.
Avatar billede erikjacobsen Ekspert
09. maj 2003 - 19:46 #3
Hvis der skal være sorterede nøgler kunne du bruge en TreeMap i stedet for?
Avatar billede arne_v Ekspert
09. maj 2003 - 19:52 #4
Nu har jeg den !

:-)

import java.util.Arrays;
import java.util.HashMap;

public class HashMapSort {
    public static void main(String[] args) {
        HashMap hm = new HashMap();
        hm.put("c","3");
        hm.put("b","2");
        hm.put("a","1");
        System.out.println(hm);
        Object[] sa = hm.keySet().toArray();
        Arrays.sort(sa);
        for(int i = 0; i < sa.length; i++) {
            String key = (String)sa[i];
            String value = (String)hm.get(key);
            System.out.println(key + "->" + value);
        }
       
    }
}
Avatar billede arne_v Ekspert
09. maj 2003 - 19:54 #5
Men hvis det er noget du skal gøre meget, så skal du overveje
Erik's forslag om TreeMap, fordi den vil være meget hutigere
til dette (men formentlig en anelse langsommere i normal
put og get).
Avatar billede madox Nybegynder
09. maj 2003 - 20:56 #6
Perfekt :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester