Prueba con diferentes tipos de elementos
En el paso anterior, utilizamos el método contains()
con una List
de objetos String
. El método contains()
es versátil y se puede utilizar con colecciones que almacenan diferentes tipos de elementos, como números, objetos personalizados o incluso otras colecciones.
Al utilizar contains()
, Java se basa en el método equals()
de los objetos dentro de la colección para determinar si el elemento que se está buscando coincide. Para los tipos primitivos (como int
, double
, boolean
), se utilizan sus correspondientes clases envoltorio (Integer
, Double
, Boolean
), y sus métodos equals()
comparan los valores. Para los objetos, el método equals()
predeterminado comprueba si las dos referencias de objeto apuntan a la misma ubicación de memoria. Sin embargo, muchas clases (como String
, Integer
, etc.) sobrescriben el método equals()
para comparar el contenido o valor real de los objetos.
Modifiquemos nuestro programa para trabajar con una List
de objetos Integer
y veamos cómo se comporta contains()
.
-
Abre el archivo HelloJava.java
en el editor WebIDE.
-
Reemplaza el código actual con el siguiente:
import java.util.ArrayList;
import java.util.List;
public class HelloJava {
public static void main(String[] args) {
// Create a List of integers
List<Integer> numbers = new ArrayList<>();
// Add some numbers to the list
numbers.add(10);
numbers.add(25);
numbers.add(5);
numbers.add(50);
// Check if the list contains 25
boolean hasTwentyFive = numbers.contains(25);
System.out.println("Does the list contain 25? " + hasTwentyFive);
// Check if the list contains 100
boolean hasOneHundred = numbers.contains(100);
System.out.println("Does the list contain 100? " + hasOneHundred);
// Check if the list contains the Integer object with value 5
boolean hasFiveObject = numbers.contains(Integer.valueOf(5));
System.out.println("Does the list contain Integer object with value 5? " + hasFiveObject);
}
}
En este código:
- Creamos una
List
que específicamente almacena objetos Integer
: List<Integer> numbers = new ArrayList<>();
.
- Agregamos valores enteros a la lista utilizando
numbers.add()
. Java convierte automáticamente los valores int
primitivos (10, 25, 5, 50) en objetos Integer
(esto se llama autoboxing).
- Utilizamos
numbers.contains(25)
y numbers.contains(100)
para verificar la presencia de valores enteros. Nuevamente, Java convierte automáticamente los valores int
primitivos 25 y 100 en objetos Integer
antes de realizar la comprobación.
- También creamos explícitamente un objeto
Integer
utilizando Integer.valueOf(5)
y verificamos si la lista contiene este objeto específico.
-
Guarda el archivo.
-
Compila el programa en la Terminal:
javac HelloJava.java
-
Ejecuta el programa:
java HelloJava
Deberías ver una salida similar a esta:
Does the list contain 25? true
Does the list contain 100? false
Does the list contain Integer object with value 5? true
Esto demuestra que contains()
funciona correctamente con objetos Integer
, comparando sus valores. El método contains()
utiliza efectivamente el método equals()
de los elementos de la colección y del elemento que se está buscando.
En el siguiente paso, exploraremos un caso especial: manejar elementos null
con el método contains()
.