En este post veremos cómo encontrar o buscar un elemento dentro de un ArrayList de Java. Para ello veremos el método contains
e indexOf
, además del método equals
de las clases.
Buscar elemento en ArrayList de Java
El método más fácil y que funciona en la mayoría de lenguajes es recorrer la lista en cuestión y comparar cada elemento con la búsqueda.
- Si se encuentra, se detiene el ciclo y se devuelve el resultado.
- Si no, se devuelve null o -1 dependiendo de la situación.
Pero en Java, un ArrayList provee el método contains
e indexOf
que podemos usar para estos propósitos. Lo único que hay que hacer es sobrescribir dos métodos de los objetos.

Y no te preocupes, si no te gusta, al final dejaré un ejemplo para poder buscar un elemento en ArrayList de Java simplemente recorriendo el ArrayList.
Buscar elemento con contains
Si queremos saber simplemente si un elemento existe dentro de un ArrayList invocamos a contains
que devuelve un booleano.
Si el elemento existe, devuelve true
, si no, false
.
Usar indexOf
Este método devuelve -1
o el índice que el elemento ocupa dentro del ArrayList. Funciona para saber si el elemento existe dentro del ArrayList y para saber cuál índice tiene al mismo tiempo.
Su uso es el siguiente:
En este caso funciona porque String ya es una clase definida y ya tiene su método equals
, así que no hay problema al llamar a indexOf
pasándole la otra cadena.
Búsqueda con clases que no sean String
Ahora vamos a ver un ejemplo para buscar elemento en ArrayList de Java usando clases propias. Solo hay que sobrescribir el método equals
y hashCode
.
El método equals y hashCode
¿Has escuchado del método equals en Java? sirve para comparar que dos objetos son iguales, ya que por ejemplo para comparar cadenas en Java se utiliza ese método en lugar del operador ==
.
Este método sirve para indicar si dos objetos son iguales, y podemos definirlo a nuestro gusto, la forma más básica es comparar cada propiedad. Veamos un ejemplo de la clase Producto:
Aunque el código puede parecer confuso, el principio es el mismo: comparar propiedad con propiedad; además de comparar la clase. La mayoría de ocasiones tu IDE puede ayudarte a generar estos métodos.
Una vez que hemos sobrescrito esos métodos, podemos usar indexOf
y contains
.
Buscar elemento en ArrayList de Java con clase propia usando contains
Veamos el siguiente código:
Además de definir la clase, creamos un ArrayList de tipo Producto. Como hemos sobrescrito correctamente ambos métodos, todo funciona bien.
El método indexOf con una clase propia
Como hemos sobrescrito ambos métodos de la clase, podemos usar normalmente el método indexOf.
Buscar elemento en ArrayList de Java manualmente
Para terminar este post vamos a ver cómo realizar una búsqueda manual, ya lo dije, recorriendo el ArrayList y comparando manualmente.
Voy a usar de nuevo la clase Producto pero ahora no me hace falta hashCode
ni equals
, solo algunos getters. La clase queda así:
Lo siguiente es definir el ArrayList con la búsqueda:
Al final se hace la búsqueda recorriendo el ArrayList. En este caso voy a buscar únicamente si ya existe un producto con el mismo código, no importa que el nombre o el precio no coincidan.
El código completo queda así:
Explicación en vídeo
Si no te ha quedado claro, te dejo un vídeo explicativo:
Conclusión
Solo debo agregar una pequeña nota y es que al buscar manualmente dentro del ArrayList, la lógica puede ser movida a una función para tener un código más limpio y ordenado como vimos en la búsqueda binaria.
Te invito a leer más sobre Java.
Excelente aportación, las mejores explicaciones y ejemplos de programación que he visto jamás!! . A nivel didáctico eres un crack, un 10, Sigue así!!
Y como le hago para encontrar un elemento dentro de un objeto… no se si me explico…
Ejemplo:
Agrego este objeto a mi ArrayList
Producto: Gansito
ID: 123456
Marca: Marinela
y que solamente me devuelva el ID
Como hago es?
Excelente muchas gracias, la comparación es exitosa colocando la lógica en la entidad.
Así es, con eso podemos comparar cualquier objeto implementando métodos personalizados.
No olvides seguirme y compartir para más tutoriales. Saludos
ERES DIOS!!!!!!!!! GRACIAS