Avatar billede Slettet bruger
23. juli 2004 - 04:09 Der er 5 kommentarer og
1 løsning

Collections.sort sorterer ikke som jeg vil have det

Vector spillerVector = new Vector();

Så tilføjer jeg 33 Spiller objekter fra en microsoft access database... og så skriver jeg:

  Collections.sort(spillerVector);

Min compareTo metode i Spiller klassen ser sådan ud:

  public int compareTo(Object o) {
    return this.navn.compareTo( ( (Spiller) o).navn);
  }

Så bruger jeg en for-løkke til at hente alle objekterne fra vector'en (iterator kunne også bruges)

  for(int i = 0; i < spillerVector.size(); i++) {
    Spiller lolspiller = (Spiller) spillerVector.get(i);
    System.out.println(lolspiller.getNavn());
  }

Det giver mig dette hvilket ikke er helt sorteret, den sorterer nogle af objekterne og andre sorterer den ikke.
Avatar billede arne_v Ekspert
23. juli 2004 - 06:35 #1
Det er faktisk sorteret. Bare case sensitivt.

Lav en case insensitiv compareTo metode.
Avatar billede arne_v Ekspert
23. juli 2004 - 06:36 #2
Prøv:

  public int compareTo(Object o) {
    return this.navn.compareToIgnoreCase( ( (Spiller) o).navn);
  }
Avatar billede jakoba Nybegynder
23. juli 2004 - 06:41 #3
Den sorterer faktisk perfekt. Kik i ascitabellen for gogstavkoder www.asciitable.com
'A' er et andet bogstav end 'a' og har en langt lavere kode.

hvis du ønsker at ignorere forskellen på store og små bogstaver i din compareTo metode må du sørge for at 'A' og 'a' bliver set som samme bogstav.

i klassen String http://java.sun.com/j2se/1.3/docs/api/java/lang/String.html
er der en anden sammenligningngsmetode: 
compareToIgnoreCase(String str)
          Compares two strings lexicographically, ignoring case considerations.
mon ikke det er den du er ude efter :)

  public int compareTo(Object o) {
    return this.navn.compareToIgnoreCase( ( (Spiller) o).navn);    // rettet linie
  }

mvh JakobA
Avatar billede Slettet bruger
23. juli 2004 - 13:40 #4
Der kan man bare se, det virker perfekt med compareToIgnoreCase :)

Smid et svar, så deler jeg points ud mellem jer to.

Tak for hjælpen
Avatar billede jakoba Nybegynder
23. juli 2004 - 13:48 #5
arne var først :)
Avatar billede arne_v Ekspert
23. juli 2004 - 15:17 #6
svar
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