Java - Comparar objetos de la misma clase

   
Vista:
Imágen de perfil de Ana

Comparar objetos de la misma clase

Publicado por Ana (2 intervenciones) el 19/09/2017 03:19:50
Buenas, estoy en la 3er semana de cursada de Programación Orientada a Objetos, y la verdad que no sé como resolver esto de comparar dos objetos que pertenecen a la misma clase. El ejercicio pide crear una clase Libro que contenga los siguientes atributos: ISBN - Titulo - Autor - Número de páginas. Y luego, crear 2 objetos Libro (los valores que se quieran) e indicar cuál de los 2 tiene más páginas.

Yo tengo una clase libro donde defino los atributos de libro, y donde debería hacer la función que compare (no??), y tengo otra clase TestLibro en el cual solo le paso los parametros de mis dos objetos libro1 y libro2.

Alguien puede ayudarme por favor? Desde ya, muchas gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Comparar objetos de la misma clase

Publicado por Andrés andres.mella.romero@gmail.com (337 intervenciones) el 19/09/2017 06:47:43
En la clase libro, puedes implementar la intefaz Comparable:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Libro implements Comparable<Libro> {
        :
        :
        .
	//Implementar el la interfaz Comparable lo que significa que dos objetos de esta clase se pueden comparar 
	//entre sí
	@Override
	public int compareTo(Libro o) {
		//El número de páginas del libro es menor al que se pasa como argumento
		if(this.numeroPaginas < o.getNumeroPaginas()) {
			return -1;
		}
		//El número de páginas del libro es mayor al que se pasa como argumento
		if(this.numeroPaginas > o.getNumeroPaginas()) {
			return 1;
		}
 
		//Tienen el mismo número de páginas
		return 0;
	}
 
}

Otra opción es implementar la interaz Comparator en una clase independiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class LibroPaginasComparator implements Comparator<Libro>{
 
	@Override
	public int compare(Libro o1, Libro o2) {
		//El número de páginas del libro es menor al que se pasa como argumento
		if(o1.getNumeroPaginas() < o2.getNumeroPaginas()) {
			return -1;
		}
		//El número de páginas del libro es mayor al que se pasa como argumento
		if(o1.getNumeroPaginas() > o2.getNumeroPaginas()) {
			return 1;
		}
 
		//Tienen el mismo número de páginas
		return 0;
	}
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Ana

Comparar objetos de la misma clase

Publicado por Ana (2 intervenciones) el 20/09/2017 20:42:33
Muchísimas gracias, Andrés!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Comparar objetos de la misma clase

Publicado por Yamil Bracho (2167 intervenciones) el 20/09/2017 20:51:51
Tambien puedes sobrescribir el metodo equals().
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Revisar política de publicidad