Gente,eu tenho a seguinte classe:
public class MyLatitudes {
private int x;
private double lat;
public MyLatitudes(int x, double lat){
this.x=x;
this.lat=lat;
}
}
e em outra classe, eu tenho o seguinte método:
public class Outra{
private LinkedList<MyLatitudes> listLat = new LinkedList<listLat>();
public void readDefs (String str){
String s[]= str.split("\,");
int x= Integer.parseInt(s[1]);
double lat=Double.parseDouble(s[3]);
MyLatitudes mylat = new MyLatitudes(x, lat);
listLat.put(myLat);
}
}
Mas agora eu gostaria que esta lista fosse organizada em ordem decrescente pelos numeros de latitudes… mas não sei bem como fazer isso… eu sei que devo implentar o Comparable na classe MyLatitudes e depois eu tenho que implementar o método compareTo()… Mas não sei muito bem como fazer isso… Vcs podem me ajudar dando um exemplo?
Uma outra coisa que eu gostaria de saber é que ao final de colocados todos os elementos na minha lista, já organizados em ordem decrescente, como eu faria para pegar apenas o primeiro e o último elemento dessa lista???
Obrigada!!
[code]
public class Fornecedor implements Comparable{
private Long id;
public Fornecedor() {
this.id = 0L;
}
public Long getId() {
return id;
}
@Override
public int compareTo(Fornecedor o) {
if (o.getId() > this.id) {
return 1;
} else if (o.getId() < this.id){
return -1;
} else {
return 0;
}
}
}[/code]
Abraços
Na classe MyLatitudes:
public int compareTo(MyLatitudes m){
return this.getLat() - m.getLat();
// ou
return this.getLat() > m.getLat()?1 : this.getLat() < m.getLat() ? -1: 0 ;
}
Vide: compareTo(T o)
Veja esse post do Mantú: http://www.guj.com.br/java/54036-comparator#284273
É a referência completa sobre Comparables e Comparators.
[quote=ViniGodoy]Veja esse post do Mantú: http://www.guj.com.br/java/54036-comparator#284273
É a referência completa sobre Comparables e Comparators.
[/quote]
Muito bom… isso pode virar um artigo fácil…
Abraços
Legal, modifiquei a minha classe:
public class MyLatitudes {
private int x;
private double lat;
public MyLatitudes(int x, double lat){
this.x=x;
this.lat=lat;
}
public double getLatitude(){
return lat;
}
public int compareTo(MyLatitudes otherLat){
return this.getLatitude-otherLat.getLatitude();
}
}
Mas agora gostaria de saber como faço para inserir os objetos na lista de maneira decrescente no meu metodo readDefs(String str)…
poderia fazer um :
listLat.add(myLat);
Collections.sort(listLat);
Obrigada