Como implementar o Comparable?

5 respostas
oitathi

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!!

5 Respostas

celso.martins
public class Fornecedor implements Comparable<Fornecedor>{
	
	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;
		}
	}
}

Abraços

drigo.angelo

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)

ViniGodoy

Veja esse post do Mantú: http://www.guj.com.br/java/54036-comparator#284273
É a referência completa sobre Comparables e Comparators.

celso.martins

ViniGodoy:
Veja esse post do Mantú: http://www.guj.com.br/java/54036-comparator#284273
É a referência completa sobre Comparables e Comparators.

Muito bom… isso pode virar um artigo fácil…

Abraços

oitathi

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

Criado 10 de março de 2011
Ultima resposta 11 de mar. de 2011
Respostas 5
Participantes 4