Avatar billede jesperbaldur Nybegynder
18. november 2003 - 18:39 Der er 3 kommentarer og
1 løsning

Sortere Arraylist. Hvordan?

Jeg har en arraylist:
ArrayList list = new ArrayList();
som kan indeholde følgende:
int[] j= {14,7,3};
int[] p= {5,5,57};
int[] k= {10,2,57};

list.add(j), list.add(k) og list.add(p)

Er det muligt at sorete sådan en arrayliste med hensyn til det første felt? Således at list ser således ud efter sorteringen:
list = {{5,5,57},{10,2,57},{14,7,3}};
Avatar billede arne_v Ekspert
18. november 2003 - 19:01 #1
Eksempel:

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class ArrayListArrays {
    public static void main(String[] args) {
        List lst = new ArrayList();
        int[] j= {14,7,3};
        int[] p= {5,5,57};
        int[] k= {10,2,57};
        lst.add(j);
        lst.add(k);
        lst.add(p);
        for(int i = 0; i < lst.size(); i++) {
            int[] a = (int[])lst.get(i);
            for(int ii = 0; ii < a.length; ii++) {
                System.out.print(" " + a[ii]);
            }
            System.out.println();
        }
        Collections.sort(lst, new Cmp());
        for(int i = 0; i < lst.size(); i++) {
            int[] a = (int[])lst.get(i);
            for(int ii = 0; ii < a.length; ii++) {
                System.out.print(" " + a[ii]);
            }
            System.out.println();
        }
    }
}

class Cmp implements Comparator {
    public int compare(Object o1, Object o2) {
        return ((int[])o1)[0] - ((int[])o2)[0];
    }
    public boolean equals(Object obj)  {
        return false;
    }
}
Avatar billede jesperbaldur Nybegynder
20. november 2003 - 11:52 #2
det viker perfekt. Men må man spørge hvordan det virker? Forstår ikke helt det med Comparator'en
Avatar billede arne_v Ekspert
20. november 2003 - 12:02 #3
Comparatoren sammenligner to elementer i array-listen.

Så først type castes objekterne til int[], fordi det er det de er.

Og så sammenlignes de første elementer, som jo er det der skulle
sorteres på.
Avatar billede jesperbaldur Nybegynder
20. november 2003 - 12:11 #4
OK. Tak for hjælpen
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