Testar com Diferentes Tipos de Elementos
Na etapa anterior, usamos o método contains() com uma List de objetos String. O método contains() é versátil e pode ser usado com coleções que armazenam diferentes tipos de elementos, como números, objetos personalizados ou até mesmo outras coleções.
Ao usar contains(), Java se baseia no método equals() dos objetos dentro da coleção para determinar se o elemento que está sendo procurado corresponde. Para tipos primitivos (como int, double, boolean), suas classes wrapper correspondentes (Integer, Double, Boolean) são usadas, e seus métodos equals() comparam os valores. Para objetos, o método equals() padrão verifica se as duas referências de objeto apontam para o mesmo local de memória. No entanto, muitas classes (como String, Integer, etc.) substituem o método equals() para comparar o conteúdo real ou o valor dos objetos.
Vamos modificar nosso programa para trabalhar com uma List de objetos Integer e ver como contains() se comporta.
-
Abra o arquivo HelloJava.java no editor WebIDE.
-
Substitua o código atual pelo seguinte:
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);
}
}
Neste código:
- Criamos uma
List que armazena especificamente objetos Integer: List<Integer> numbers = new ArrayList<>();.
- Adicionamos valores inteiros à lista usando
numbers.add(). Java converte automaticamente os valores primitivos int (10, 25, 5, 50) em objetos Integer (isso é chamado de autoboxing).
- Usamos
numbers.contains(25) e numbers.contains(100) para verificar a presença de valores inteiros. Novamente, Java faz autoboxing dos valores primitivos int 25 e 100 em objetos Integer antes de realizar a verificação.
- Também criamos explicitamente um objeto
Integer usando Integer.valueOf(5) e verificamos se a lista contém este objeto específico.
-
Salve o arquivo.
-
Compile o programa no Terminal:
javac HelloJava.java
-
Execute o programa:
java HelloJava
Você deve ver uma saída semelhante a esta:
Does the list contain 25? true
Does the list contain 100? false
Does the list contain Integer object with value 5? true
Isso demonstra que contains() funciona corretamente com objetos Integer, comparando seus valores. O método contains() usa efetivamente o método equals() dos elementos na coleção e do elemento que está sendo procurado.
Na próxima etapa, exploraremos um caso especial: lidar com elementos null com o método contains().