Test avec différents types d'éléments
Dans l'étape précédente, nous avons utilisé la méthode contains()
avec une List
d'objets String
. La méthode contains()
est polyvalente et peut être utilisée avec des collections qui stockent différents types d'éléments, tels que des nombres, des objets personnalisés ou même d'autres collections.
Lorsque vous utilisez contains()
, Java s'appuie sur la méthode equals()
des objets dans la collection pour déterminer si l'élément recherché correspond. Pour les types primitifs (comme int
, double
, boolean
), leurs classes d'emballage correspondantes (Integer
, Double
, Boolean
) sont utilisées, et leurs méthodes equals()
comparent les valeurs. Pour les objets, la méthode equals()
par défaut vérifie si les deux références d'objet pointent vers le même emplacement mémoire. Cependant, de nombreuses classes (comme String
, Integer
, etc.) remplacent la méthode equals()
pour comparer le contenu ou la valeur réelle des objets.
Modifions notre programme pour qu'il fonctionne avec une List
d'objets Integer
et voyons comment se comporte contains()
.
-
Ouvrez le fichier HelloJava.java
dans l'éditeur WebIDE.
-
Remplacez le code actuel par le suivant :
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);
}
}
Dans ce code :
- Nous créons une
List
qui contient spécifiquement des objets Integer
: List<Integer> numbers = new ArrayList<>();
.
- Nous ajoutons des valeurs entières à la liste en utilisant
numbers.add()
. Java convertit automatiquement les valeurs int
primitives (10, 25, 5, 50) en objets Integer
(cela s'appelle l'autoboxing).
- Nous utilisons
numbers.contains(25)
et numbers.contains(100)
pour vérifier la présence de valeurs entières. Encore une fois, Java effectue l'autoboxing des valeurs int
primitives 25 et 100 en objets Integer
avant d'effectuer la vérification.
- Nous créons également explicitement un objet
Integer
en utilisant Integer.valueOf(5)
et vérifions si la liste contient cet objet spécifique.
-
Enregistrez le fichier.
-
Compilez le programme dans le Terminal :
javac HelloJava.java
-
Exécutez le programme :
java HelloJava
Vous devriez voir une sortie similaire à celle-ci :
Does the list contain 25? true
Does the list contain 100? false
Does the list contain Integer object with value 5? true
Cela démontre que contains()
fonctionne correctement avec les objets Integer
, en comparant leurs valeurs. La méthode contains()
utilise efficacement la méthode equals()
des éléments de la collection et de l'élément recherché.
Dans l'étape suivante, nous explorerons un cas particulier : la gestion des éléments null
avec la méthode contains()
.