Avatar billede pigegruppe Nybegynder
28. maj 2003 - 19:39 Der er 8 kommentarer

Sorterfunktion på liste

Hej :o)

Jeg sidder og arbejder med et medlemsregister. Man kan oprette et medlem via en GUI, dereter kommer dette medlem med navn frem på en liste. Som det fungerer nu kommer det nyeste medlem nederst på denne liste. Jeg vil gerne kunne sortere denne liste alfabetisk, men det er ikke helt lykkes endnu. Her er hvad jeg har af kode, som jeg tror skal bruges i den forbindelse.

Håber at der er nogen der kan hjælpe

Nina


denne metode opdaterer oplysningerne i registeret
      og viser den medlemets navn på listen
   
    public void opdaterListe() {

        Vector output = new Vector();
        String o;
        hmListIndexCpr = new HashMap(mitRegister.medlemsListe.size());

        for (int i = 0; i < mitRegister.medlemsListe.size(); i++) {
            Medlem m = (Medlem) mitRegister.medlemListe.get(i);
            o = a.getNavn() + "\n ";
            output.add(o);
            hmListIndexCpr.put(new Integer(i), new Integer(a.getCprNr()));
        }

        list.setListData(output);

    }

    public void opdater() {
        opdaterListe();

    }

public void sorterEfterNavn() {
        Vector output = new Vector();
        MedlemComparator mc = new MedlemComparator();
        Collections.sort(output, mc);
        System.out.println(output);
        list.setListData(output);
        list.repaint();
        list.show();

    }

public class AnsatComparator implements Comparator {
   
    public int compare(Object arg0, Object arg1) {
        Ansat s1 = (Ansat) arg0;
        Ansat s2 = (Ansat) arg1;
        return s1.getNavn().compareTo(s2.getNavn());
    }
}
Avatar billede arne_v Ekspert
28. maj 2003 - 20:08 #1
Hvad er det der ikke virker ? Sorteringen ? GUI screen update ?
Avatar billede pigegruppe Nybegynder
28. maj 2003 - 20:12 #2
Det er sorteringen der ikke virker
Avatar billede arne_v Ekspert
28. maj 2003 - 20:18 #3
Der er ogsån oget galt.

public void sorterEfterNavn() {
        Vector output = new Vector();  // lav ny tom Vector
        MedlemComparator mc = new MedlemComparator();
        Collections.sort(output, mc); // sorter den tomme vector
        System.out.println(output); // udskriv sorterede tomme vector
        list.setListData(output); // brug sorterede tomme Vector
        list.repaint();
        list.show();

    }
Avatar billede arne_v Ekspert
28. maj 2003 - 20:20 #4
Måske (jeg gætter da jeg ikke har hele jeres applikation) så skal:

Vector output = new Vector(); 

erstattes af:

Vector output = (Vector)input.clone();

[input er så data før sortering]
Avatar billede pigegruppe Nybegynder
28. maj 2003 - 20:47 #5
Hmm... Måske er det svært at forstå hvis man ikke har resten af programmet... Det med Vector output = (Vector)input.clone(); kunne jeg ikke lige få til at gøre en forskel
Avatar billede arne_v Ekspert
28. maj 2003 - 20:53 #6
Prøv evt. med:

    public void sorterEfterNavn() {
        ...
        MedlemComparator mc = new MedlemComparator();
        System.out.println(output);
        Collections.sort(output, mc);
        System.out.println(output);
        ...
    }

Der skal være noget i output både før og efter men rækkefølgen skal ændre sig.
Avatar billede arne_v Ekspert
28. maj 2003 - 20:55 #7
input er den oprindelige usorterede Vector med data i.
Avatar billede arne_v Ekspert
31. maj 2003 - 19:23 #8
Er I kommet videre ?
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