10.05.2014 Views

programación i - Universidad ORT Uruguay

programación i - Universidad ORT Uruguay

programación i - Universidad ORT Uruguay

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

112 Programación I<br />

12.1.8.2 Otra versión de búsqueda (indexOf)<br />

En vez de devolver true o false, que devuelva el objeto que estoy buscando.<br />

// VERSION 3: usa indexOf<br />

// Otra posible implementacion de buscar un Gasto<br />

// a partir del monto, utilizando metodos de la coleccion<br />

public Gasto buscarGastoDeMonto(int unMonto) {<br />

Gasto unG;<br />

// creo un objeto Gasto, similar al que busco<br />

// (similar implica que el método equals dara true)<br />

unG = new Gasto();<br />

unG.setMonto(unMonto);<br />

int aux;<br />

aux = (this.devolverTodosGastos().indexOf(unG));<br />

Gasto retorno = null;<br />

if (aux != -1) {<br />

retorno= (this.getListaGastos().get(aux));<br />

}<br />

return retorno;<br />

}<br />

El método indexOf devuelve la posición en la cual hay un objeto similar o el valor -1 si no lo<br />

hay. Aquí luego se accede a esa posición y se obtiene el objeto real.<br />

12.1.9 Ordenación (sort)<br />

Quiero agregar un método que muestre los gastos ordenados por monto. Veremos diferentes<br />

alternativas.<br />

12.1.9.1 Implementación a mano<br />

Una alternativa sería hacer mi propio método de ordenación, por ejemplo utilizando algoritmo<br />

de selección similar al utilizado al presentar los arrays. Este algoritmo recorre la lista buscando<br />

el mayor, cuando lo ubica lo coloca al final y repite esta operación, pero sin tener en cuenta el<br />

último. Repite la búsqueda y reubicación considerando la lista sin esos últimos elementos.<br />

Existen otros posibles métodos para ordenar que se verán en cursos posteriores (por ej. sort -<br />

ordenar- por enumeración, intercambio, inserción, quicksort, mergesort). El estudio de la<br />

eficiencia de estos algoritmos es un tema de cursos más avanzados.<br />

12.1.9.2 Reutilizar<br />

Veamos primero cómo debería ser este método. Pensemos si quisiera ordenar varios libros.<br />

¿Qué debo indicarle a alguien para que pueda ordenarlos? Si conoce algún algoritmo de<br />

ordenación como los nombrados arriba, en realidad lo único que necesita saber es: si dados dos<br />

libros, el primero es menor que el segundo o no. Debe tener un método que indique si un libro<br />

es menor que otro en algún sentido (por ej. cantidad páginas, edición, etc.).<br />

Existe en la clase Collections un método llamado sort, que según indica utiliza el orden natural<br />

de los elementos. ¿Qué es el orden natural? Es el orden definido en la propia clase. El método<br />

por defecto se llama compareTo. ¿Cómo sé que se llama así? Aparece aquí el concepto de<br />

interface.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!