gostaria de saber como eu faria para conseguir ordenar usando o Arraylist com tipos diferentes
segue o codigo abaixo:
import java.util.*;
class Lista{
String Nome;
int numero;
public Lista(String n,int m){
this.Nome=n;
this.numero=m;
}
public String getNome(){return Nome;}
public void SetNome(String Nome){this.Nome=Nome;}
public int getnumero(){ return numero;}
public void Setnumero(int numero){this.numero=numero;}
public String toString(){
return this.Nome+" "+this.numero;}
}
class ordena extends Lista implements Comparable<Lista> {
public ordena(String n,int m){
super(n,m);
}
public int compareTo(Lista outra) {
if (this.numero < outra.numero) {
return -1;
}
if (this.numero > outra.numero) {
return 1;
}
return 0;
}
}
public class teste{
public static void main(String args[]){
Lista t1,t2,t3;
List <Lista> lista=new ArrayList<Lista>();
t1=new Lista("Sérgio",2);
t2=new Lista("Sérgio",1);
t3=new Lista("Sérgio",3);
lista.add(t1);
lista.add(t2);
lista.add(t3);
System.out.println(lista);
Collections.sort(lista);
System.out.println(lista);
}
}
[code]
public class Lista implements Comparable {
String Nome;
int numero;
public Lista(String n,int m){
this.Nome=n;
this.numero=m;
}
public String getNome(){return Nome;}
public void SetNome(String Nome){this.Nome=Nome;}
public int getnumero(){ return numero;}
public void Setnumero(int numero){this.numero=numero;}
public String toString(){
return this.Nome+" "+this.numero;}
@Override
public int compareTo(Lista o) {
if (this.numero < o.numero) {
return -1;
}
if (this.numero > o.numero) {
return 1;
}
return 0;
}
Olha só. O método sort tem uma sobrecarga que aceita um Comparator. Se vc quer fazer várias ordenações eu acho que seria legal ter todas implementadas. por exemplo.
[code]
public static void main(String[] args) {
Lista t1,t2,t3;
List lista=new ArrayList();
t1=new Lista(“térgio”,2);
t2=new Lista(“Sérgio”,1);
t3=new Lista(“Sérgio”,3);
lista.add(t1);
lista.add(t2);
lista.add(t3);
System.out.println(lista);
ordenaPorNome(lista);
System.out.println(lista);
ordenaPorNumero(lista);
System.out.println(lista);
}
// Para ordenar por nome
private static void ordenaPorNome(List<Lista> lista) {
Collections.sort(lista, new Comparator<Lista>() {
@Override
public int compare(Lista o1, Lista o2) {
return o1.getNome().compareTo(o2.getNome());
}
});
}
// Para ordenar por numeros
private static void ordenaPorNumero(List<Lista> lista) {
Collections.sort(lista, new Comparator<Lista>() {
@Override
public int compare(Lista o1, Lista o2) {
return o1.getnumero().compareTo(o2.getnumero());
}
});
}[/code]
E a classe list não precisa implementar nada. Também troque o seu numero (int) para Integer. Acho que assim ficaria melhor.