He aquí un pequeño ejemplo de como ordenar implementando la interfaz comparable, he creado el pojo autobús, he determinado que el número de plazas es el atributo para determinar cual es mayor que cual, aunque podrían ser varios atributos, y he realizado una clase main pintando el antes y el después.
Pojo Autobus:
Código Java:
Ver original/**
*
*/
package main.collection.sort;
/**
* @author forosDelWeb
* @since 26-10-2013
*
*/
public class Autobus implements Comparable<Autobus> {
private static final String SALTO_LINEA
= "\n"; private static final String ESPACIO
= " ";
private int numPlazas;
/**
* Constructor por defecto
*/
public Autobus() {
}
/**
* Que estupido me senti con este javaDoc.
*
* @param numPlazas numero de plazas del autobus
* @param matricula matricula del autobus
* @param modelo el modelo del autobus
* @param marca la marca del autobus
*/
this.numPlazas = numPlazas;
this.marca = marca;
this.matricula = matricula;
this.modelo = modelo;
}
/**
* @return the numPlazas
*/
public int getNumPlazas() {
return this.numPlazas;
}
/**
* @param numPlazas the numPlazas to set
*/
public void setNumPlazas(int numPlazas) {
this.numPlazas = numPlazas;
}
/**
* @return the matricula
*/
public String getMatricula
() { return this.matricula;
}
/**
* @param matricula the matricula to set
*/
public void setMatricula
(String matricula
) { this.matricula = matricula;
}
/**
* @return the modelo
*/
return this.modelo;
}
/**
* @param modelo the modelo to set
*/
public void setModelo
(String modelo
) { this.modelo = modelo;
}
/**
* @return the marca
*/
return this.marca;
}
/**
* @param marca the marca to set
*/
public void setMarca
(String marca
) { this.marca = marca;
}
/*
* (non-Javadoc)
*
* @see java.lang.Object#toString()
*/
@Override
StringBuilder strAutobus = new StringBuilder();
strAutobus.append("Numero de plazas : ").append(this.numPlazas).append(Autobus.ESPACIO);
strAutobus.append("Marca : ").append(this.marca).append(Autobus.ESPACIO);
strAutobus.append("Modelo : ").append(this.modelo).append(Autobus.ESPACIO);
strAutobus.append("Matricula : ").append(this.matricula).append(Autobus.SALTO_LINEA);
return strAutobus.toString();
}
/**
* @param objAutobus objeto con el que comparar
* @return <code>resComparacion</code> si resComparacion = 0 los objetos son iguales, si resComparacion > 0 el objeto this es menor que el
* especificado por argumento si resComparacion > 0 el objetos this es mayor que el especificado por argumento
*/
@Override()
public int compareTo(final Autobus objAutobus) {
int resComparacion = 0;
if (this.numPlazas > objAutobus.getNumPlazas()) {
resComparacion = 1;
}
else if (this.numPlazas < objAutobus.getNumPlazas()) {
resComparacion = -1;
}
return resComparacion;
}
}
Clase main :
Código Java:
Ver originalpackage main.collection.sort;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* 1-Creamos una lita de objetos autobus 2-Utilizaremos el metodo sort de CollectionUtils para ordenar 3-Pintaremos el resultado por pantalla
* utilizando el metodo sobrescrito toString
*
*
* @author forosDelWeb
* @since 26-10-2013
*
*/
public class CollectionSort {
private static final String CLASE
= "CollecionSort";
private static final int NUM_PLAZAS_3 = 3;
private static final int NUM_PLAZAS_5 = 5;
private static final int NUM_PLAZAS_7 = 7;
private static final int NUM_PLAZAS_10 = 10;
private static final String MATRICULA_BASICA
= "MATRICULA-XXX"; private static final String MODELO_BASICO
= "MODELO-YYY"; private static final String MARCA_BASICA
= "MARCA-ZZZ";
public static void main
(String[] args
) { List<Autobus> lstAutobus = new ArrayList<Autobus>();
lstAutobus.add(new Autobus(CollectionSort.NUM_PLAZAS_5, CollectionSort.MATRICULA_BASICA, CollectionSort.MODELO_BASICO,
CollectionSort.MARCA_BASICA));
lstAutobus.add(new Autobus(CollectionSort.NUM_PLAZAS_3, CollectionSort.MATRICULA_BASICA, CollectionSort.MODELO_BASICO,
CollectionSort.MARCA_BASICA));
lstAutobus.add(new Autobus(CollectionSort.NUM_PLAZAS_7, CollectionSort.MATRICULA_BASICA, CollectionSort.MODELO_BASICO,
CollectionSort.MARCA_BASICA));
lstAutobus.add(new Autobus(CollectionSort.NUM_PLAZAS_10, CollectionSort.MATRICULA_BASICA, CollectionSort.MODELO_BASICO,
CollectionSort.MARCA_BASICA));
Logger.getLogger(CollectionSort.CLASE).log(Level.INFO, "Lista desordenada");
Logger.getLogger(CollectionSort.CLASE).log(Level.INFO, lstAutobus.toString());
Logger.getLogger(CollectionSort.CLASE).log(Level.INFO, "Lista ordenada");
Logger.getLogger(CollectionSort.CLASE).log(Level.INFO, lstAutobus.toString());
}
}