27. oktober 2003 - 21:39Der er
16 kommentarer og 1 løsning
Kopiering fra list over til Map
Opgaven går ud på at tælle antallet af hver enkelt ord i en tekst. Teksten ligger som linket list, og jeg har ingen problemer i at kopiere den over i f.eks et treemap eller en arraylist.
Jeg skal tælle hvert ord og så lægge dem over i et map, med ord som key og antal som value. Dér skal de ligge alfabetisk.
Jeg er med på at en Collections.sort(aList) giver mig en alfabetisk sorteret liste med dubletter, så det er jo en fin start.
Jeg har lavet denneher funktion:
Object element1 = null, element2 = null; int antal = 1, l = 1; for (int a=0; a < cList.size()-1; a++) { for (int m = 0; m <= cList.size()-1; m++) { element1 = cList.get(m); element2 = cList.get(l);
if (element1.equals(element2)) { antal++; } } l++; antal=1; hList.put(element1, new Integer(antal)); } ..og den tæller ordernes forekomster (dog ikke det første, jeg aner ikke hvorfor).
Jeg aner ikke om det bliver lagt over i HashMap'et, eftersom jeg ikke kan finde ud af at skrive det ud, men jeg kan ikke bruge funktionen på en Sorteret list.
Arraylist a2List = new ArrayList(); a2List.addAll(Collections.sort(aList));
...virker ikke.
Desuden er jeg overbevist om at det kan laves meget, meget smartere end min idé....nogle bedre løsninger (well, de bliver allesammen bedre, eftersom min ikke virker)?
Det er ikke det store problem for mig at tælle ordene selv og så tampe alle værdierne ind, men idéen er at gøre det smartere. Altså tage en sorteret arraylist med dubletter via Collections.sort, tælle hvert enkelt ords antal af forekomster, og så lægge det over i et map. Det er ikke mappet, der skal over i arraylisten.
Opgavetekst(for at jeg ikke forklarer problemet forkert):
"Udskriv hvor mange elementer der er af hver type. Du skal udskrive alementerne i alfabetisk rækkefølge. (Hint: Kopier elementerne over i en passende type map, idet du gemmer elementerne sådan her: (af->2), (aftalebogen->3) osv...du har element som key, og lagrer tallet som et Integer-objekt, der gøres én større for hvert element af typen, du finder.)"
...det kunne også bare være at jeg skulle spørge "hvordan gør man dét smart?"
Min kode virker ikke på noget, der er sorteret, og dét er en fejl, eftersom jeg ikke rigtigt aner hvordan jeg skal sortere mappet efter at jeg har lagt værdierne over i det.
Desuden er der stadig problemet med det første ord, der ikke bliver sorteret.
Jeg kan ikke finde toString() for HashMap i min Java SDK...
arne_v, jeg er meget imponeret af din lyst til at kommentere på alle mine spørgsmål...men jeg vil også gerne give dig nogle point, så kan du ikke snige et svar ind hist og her? :o)
Iterator it = aList.iterator(); while (it.hasNext()) { String str = (String)it.next(); if (mMap.containsKey(str)) { Integer integer = (Integer) mMap.get(str); int value = integer.intValue(); value++; mMap.put(str, new Integer(value)); } else { mMap.put(str, new Integer(1)); } } System.out.println(mMap);
Synes godt om
Ny brugerNybegynder
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.