Guest skinie18 Posted April 25, 2012 at 10:20 AM Report #451311 Posted April 25, 2012 at 10:20 AM Boas, eu tenho um objecto que implementa a interface Comparable, ou seja tem um compareTo. Mais tarde no programa uso para poder fazer o Collections.sort de um ArrayList desse objecto. Ate aqui tudo bem, só que eu agora quero ordenar de maneira diferente, em vez de ordenar por pontos(Por exemplo) quero ordenar por coordenadas(exemplo)... Não posso fazer 2 compareTo o mesmo que o faça o Collections.sort não vai usar o segundo. Ouvi falar da interface Comparator mas não percebi como usa-la ou se ela resolve o meu problema. Alguém me pode ajudar? class Pontos implements Comparable<Pontos> public int compareTo(Pontos pt){ if(this.pt > pt.getPt) return 1; else if(this.pt < pt.getPt) return -1 return 0; } ArrayList<Pontos> pt = new ArrayList<Pontos>(); pt.add(new Pontos(140,130)); pt.add(new Pontos(145,135)); pt.add(new Pontos(143,133)); Collections.sort(pt);
Knitter Posted April 25, 2012 at 12:40 PM Report #451347 Posted April 25, 2012 at 12:40 PM A interface Comparator resolve-te esse problema. Terás de criar uma classe para cada forma de ordenação que queres usar, e cada uma dessas classes deve implementar a interface Comparator. O funcionamento é similar à interface Comparable, terás de implementar o método compare() que recebe os dois objectos a comparar. Quando quiseres usar um método de ordenação, além da estrutura a ordenar passas também uma instância do comparador que queres usar na ordenação. Resumindo, e pegando no exemplo de ordenar por pontos ou coordenadas, crias uma classe PontosComparator, e uma CoordenadasComparator, onde ambas implementem a interface Comparator e depois implementas o método compare() em cada uma das classes da maneira que pretendes. Depois ao ordenar passas a instância do comparador que pretendes.
Baderous Posted April 25, 2012 at 12:44 PM Report #451348 Posted April 25, 2012 at 12:44 PM https://wiki.portugal-a-programar.pt/dev_geral/java/ordernarlistas/
Knitter Posted April 25, 2012 at 01:06 PM Report #451354 Posted April 25, 2012 at 01:06 PM Ena, e ainda por cima uma página criada por mim, já nem me lembrava que isso existia 😉
Guest skinie18 Posted April 25, 2012 at 01:25 PM Report #451356 Posted April 25, 2012 at 01:25 PM Em 25/04/2012 às 14:44, Baderous disse: https://wiki.portugal-a-programar.pt/dev_geral/java/ordernarlistas/ Obrigado, resolveu!
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now