programación i - Universidad ORT Uruguay
programación i - Universidad ORT Uruguay
programación i - Universidad ORT Uruguay
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
114 Programación I<br />
12.1.9.4.1 Interfaz Comparable<br />
En la clase Gasto, se indica que implementa la interface Comparable y se da código al método<br />
compareTo.<br />
// método compareTo<br />
public int compareTo(java.lang.Object o) {<br />
return this.getMonto() - ((Gasto) o).getMonto();<br />
}<br />
El método compareTo retorna:<br />
0: si el parámetro precede al receptor del mensaje; o<br />
=0: en otro caso.<br />
Si se definió utilizando generics, o sea que la clase implementa Comparable, el<br />
método compareTo queda:<br />
// método compareTo<br />
public int compareTo(Gasto o) {<br />
return this.getMonto() - o.getMonto();<br />
}<br />
12.1.9.4.2 Otro orden<br />
Supongamos que además del orden anterior se solicita otro orden diferente. Para ello dispongo<br />
de la interfaz Comparator que tiene el método compare.<br />
En la clase Casa:<br />
public ArrayList ordenarDecreciente() {<br />
// Usa orden arbitrario, definido en compare() en Comparator<br />
// El criterio por el cual comparar está implementado<br />
// (implements) en la<br />
// clase Criterio Decreciente. El método se llama compare.<br />
//<br />
// El sort lo usa cuando dados dos objetos, deba decidir cual va primero<br />
Collections.sort(this.devolverTodosGastos(), new CriterioDecreciente());<br />
return this.devolverTodosGastos();<br />
}<br />
Una forma es definir una clase auxiliar en la cual se indica el código del método compare.<br />
package gastosCasa;<br />
import java.util.Comparator;<br />
// Clase definida para contener el criterio de comparación<br />
public class CriterioDecreciente implements Comparator{<br />
// Este método es necesario definirlo para establecer el criterio por el<br />
// cual un objeto va antes que otro en la ordenación