Java - Ayuda con una duda de un metodo

 
Vista:

Ayuda con una duda de un metodo

Publicado por Santiago (2 intervenciones) el 29/07/2021 04:15:50
Buenas tengo una duda, tengo que buscar un objeto en un arraylist, es lo mismo hacer esto:

public boolean BuscarLibro(String nombre) {

for (Libros libro : libros) {
if (libros.equals(nombre))
{
return true;
}
}
return false;
}

Que hacer esto?
libros es el nombre de la arraylist de tipo Libros

public boolean BuscarLibro (String nombre){

if (libros.contains(nombre))
return true;
else{
return false;
}
}

Y... Alguien me puede explicar muy informalmente la diferencia entre equals y contains?


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
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Ayuda con una duda de un metodo

Publicado por Kabuto (1381 intervenciones) el 30/07/2021 01:12:58
Fíjate que para el contains() no necesitas un bucle, ¿ por qué?
Porque internamente ya hace él un bucle, y busca un equals() que retorne true.

Es decir, equals() compara dos objetos y te dice si son iguales o "equivalentes".
Esta comparación funciona automáticamente con los String, porque esta clase ya tiene implementado dicho método.
Si se tratara de una clase escrita por nosotros, clase Libro, o Persona, o Estudiante, Empleado, etc.... entonces si queremos que equals() funcione, tendremos que escribirle nosotros el código de ese método y programar cuando dichos objetos se han de considerar iguales o equivalentes.
Por ejemplo dos Libros podrían ser iguales si tienen el mismo ISBN.
Dos Personas serían iguale si tienen el mismo DNI.
Dos empleados serían iguales si tienen el mismo número de la seguridad social, etc...


En cambio, contains(), lo que hace es recorrer automáticamente el ArrayList y comparar el objeto que recibe como argumento, con los objetos que contiene el array.
Y esta comparación la hace mediante el equals()


Así que de los métodos que has puesto y preguntas si vienen a ser lo mismo, la respuesta es SI

Porque como hemos dicho, el contains() del segundo método lo que hace es recorrer el array y comprobar si algún equals() retorna true..... que es exactamente lo mismo que estaríamos haciendo en el primer método

De hecho, el segundo método lo puedes simplificar así:

1
2
3
public boolean BuscarLibro (String nombre){
    return libros.contains(nombre);
}
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