Índice del curso de Java JSE

  1. Introducción
  2. Eclipse
  3. Resolución de problemas
  4. Clases
  5. Objetos
  6. Hola mundo
  7. Comentarios
  8. Variables
  9. Constantes
  10. Operadores
  11. Lectura de datos
  12. Estructuras de control
    1. Estructuras de control: if
    2. Switch
    3. Estructura de control: bucle for
    4. Estructura de control: bucle while
  13. Métodos
  14. Modificador static
  15. Arrays
  16. Ejercicio – juego del ahorcado
  17. Ejercicio - tres en raya
  18. Modificadores de acceso
  19. Constructores
  20. Herencia
  21. Polimorfismo
  22. Sobrecarga y sobreescritura
  23. Abstracción
  24. Interfaces
  25. Clases internas
  26. Garbage Collector
  27. String performance
  28. Encapsulamiento
  29. Contenedores
  30. Genéricos
  31. Ejercicio alta, baja, modificación y consulta en un ArrayList
  32. Ejercicio – juego de la oca
  33. Recorrer un map
  34. Sobreescritura del equals
  35. Sobreescritura del hashcode
  36. Sobreescritura del compareTo
  37. Excepciones
  38. Enumeraciones
  39. Hilos

Sobreescritura del compareTo

El método compareTo determina si un objeto es mayor, menor o igual a otro. Devuelve 0 si son iguales, 1 (o un entero positivo cualquiera) si el primero es mayor q el segundo y -1 (o un número negativo cualquiera) si el segundo es mayor que el primero

Finca.java
public class Finca implements Comparable<Finca>{
	...
	public int compareTo(Finca otherFinca){
		double productoThis = this.getAncho()*this.getLargo();
		double productoOther = otherFinca.getAncho()*otherFinca.getLargo();
		
		int valorDevuelto = 0;
		if(productoThis > productoOther)valorDevuelto=1;
		if(productoThis < productoOther)valorDevuelto=-1;
		if(productoThis == productoOther)valorDevuelto=0;
		return valorDevuelto;	
	}
Main.java
Collections.sort(lista); //Para que esto funcione es necesario implementar la interfaz comparable

Iterator<Finca> it = lista.iterator();
while(it.hasNext()){
	Finca c = it.next();
	System.out.println(c.getNombre());
}

Notas

  • Todos los objetos tienen el método equals(), pero no todos tienen el método compareTo().
  • Si sobreescribo el compareTo, debería sobreescribir el equals. Si sobreescribo el equals, debo sobreescribir el hashcode.

Ejercicio – equals y compareTo

Hacer una clase llamada Deposito que tiene un nombre, un largo, un ancho y un alto.

Hacer un método equals (y su correspondiente método hashcode) que devolverá true cuando dos depósitos tengan el mismo volumen (largo*ancho*alto).

Añadir 5 depósitos creados a una Lista y comprobar que cuando la recorro con un iterator los depósitos quedan ordenados en función de su volumen. Para ello habrá que sobreescribir el método compareTo.

icono de mandar un mail¡Contacta conmigo!
Pablo Monteserín
contacta conmigoPablo Monteserín

Para dudas técnicas sobre los ejercicios de mis cursos es necesario estar suscrito.