Introduction
Dans ce laboratoire, vous apprendrez à vérifier si un élément spécifique existe dans un tableau Java en utilisant différentes techniques. Nous commencerons par explorer l'approche fondamentale consistant à parcourir le tableau à l'aide d'une boucle for traditionnelle pour rechercher l'élément.
Après la méthode d'itération de base, vous découvrirez comment utiliser la méthode Arrays.stream() pour une manière plus concise et potentiellement plus efficace de vérifier la présence d'un élément. Enfin, nous aborderons la considération importante de la gestion des éléments nuls dans le tableau lors de vos opérations de recherche.
Parcourir le tableau à la recherche d'un élément
Dans cette étape, vous apprendrez à vérifier si un élément spécifique existe dans un tableau Java en le parcourant à l'aide d'une boucle for traditionnelle. Il s'agit d'une technique fondamentale pour effectuer des recherches dans des collections de données.
Tout d'abord, créons un nouveau fichier Java nommé ArraySearch.java dans votre répertoire ~/project. Vous pouvez le faire en utilisant l'explorateur de fichiers de WebIDE à gauche ou en exécutant la commande suivante dans le terminal :
touch ~/project/ArraySearch.java
Maintenant, ouvrez le fichier ArraySearch.java dans l'éditeur de WebIDE et ajoutez le code Java suivant :
public class ArraySearch {
public static void main(String[] args) {
// Define an array of strings
String[] fruits = {"Apple", "Banana", "Cherry", "Date", "Elderberry"};
// The element we want to search for
String searchElement = "Cherry";
// Variable to keep track if the element is found
boolean found = false;
// Loop through the array
for (int i = 0; i < fruits.length; i++) {
// Check if the current element is equal to the search element
if (fruits[i].equals(searchElement)) {
found = true; // Element found
break; // Exit the loop since we found the element
}
}
// Print the result
if (found) {
System.out.println(searchElement + " was found in the array.");
} else {
System.out.println(searchElement + " was not found in the array.");
}
}
}
Analysons ce code :
String[] fruits = {"Apple", "Banana", "Cherry", "Date", "Elderberry"};: Cette ligne déclare et initialise un tableau de chaînes de caractères nomméfruitsavec plusieurs noms de fruits.String searchElement = "Cherry";: Cette ligne déclare une variable de type chaîne de caractèressearchElementet lui assigne la valeur "Cherry". C'est l'élément que nous recherchons dans le tableau.boolean found = false;: Cette ligne déclare une variable booléennefoundet l'initialise àfalse. Nous la définirons surtruesi nous trouvons l'élémentsearchElementdans le tableau.for (int i = 0; i < fruits.length; i++): Il s'agit d'une boucleforstandard qui parcourt le tableau.icommence à 0 et va jusqu'à (mais sans inclure) la longueur du tableaufruits.if (fruits[i].equals(searchElement)): À l'intérieur de la boucle, cette instructionifvérifie si l'élément actuel du tableau (fruits[i]) est égal à l'élémentsearchElement. Nous utilisons la méthode.equals()pour comparer des chaînes de caractères en Java, pas l'opérateur==.found = true;: Si les éléments sont égaux, nous définissons la variablefoundsurtrue.break;: Une fois l'élément trouvé, nous utilisons l'instructionbreakpour sortir de la boucle tôt, car il n'est plus nécessaire de continuer la recherche.- Le bloc
if/elsefinal affiche un message indiquant si l'élémentsearchElementa été trouvé en fonction de la valeur de la variablefound.
Enregistrez le fichier ArraySearch.java (Ctrl+S ou Cmd+S).
Maintenant, compilons et exécutons le programme dans le terminal. Assurez-vous d'être dans le répertoire ~/project.
Compilez le code :
javac ArraySearch.java
S'il n'y a pas d'erreurs, un fichier ArraySearch.class sera créé.
Exécutez le code compilé :
java ArraySearch
Vous devriez voir la sortie suivante :
Cherry was found in the array.
Maintenant, essayez de changer l'élément searchElement pour quelque chose qui n'est pas dans le tableau, comme "Grape", enregistrez le fichier, recompilez-le et exécutez-le à nouveau pour voir la sortie différente.
Utiliser Arrays.stream() pour vérifier la présence d'un élément
Dans cette étape, vous apprendrez une méthode plus moderne et souvent plus concise pour vérifier la présence d'un élément dans un tableau Java en utilisant l'API des flux (Streams API), plus précisément la méthode Arrays.stream(). Cette approche s'appuie sur les concepts de la programmation fonctionnelle et peut rendre votre code plus lisible pour certaines tâches.
Nous allons modifier le fichier ArraySearch.java que vous avez créé à l'étape précédente. Ouvrez le fichier ~/project/ArraySearch.java dans l'éditeur de WebIDE.
Remplacez le code existant par le suivant :
import java.util.Arrays;
public class ArraySearch {
public static void main(String[] args) {
// Define an array of strings
String[] fruits = {"Apple", "Banana", "Cherry", "Date", "Elderberry"};
// The element we want to search for
String searchElement = "Cherry";
// Use Arrays.stream() to check if the element exists
boolean found = Arrays.stream(fruits).anyMatch(fruit -> fruit.equals(searchElement));
// Print the result
if (found) {
System.out.println(searchElement + " was found in the array.");
} else {
System.out.println(searchElement + " was not found in the array.");
}
}
}
Examinons les modifications :
import java.util.Arrays;: Nous devons importer la classeArrayspour utiliser sa méthodestream().boolean found = Arrays.stream(fruits).anyMatch(fruit -> fruit.equals(searchElement));: C'est le cœur de la nouvelle approche.Arrays.stream(fruits): Cette instruction convertit le tableaufruitsen un flux (Stream). Un flux est une séquence d'éléments qui prend en charge diverses opérations..anyMatch(fruit -> fruit.equals(searchElement)): Il s'agit d'une opération sur le flux. La méthodeanyMatch()vérifie si au moins un élément du flux correspond à la condition donnée. La condition est fournie sous forme d'une expression lambdafruit -> fruit.equals(searchElement). Cette expression lambda prend chaquefruitdu flux et vérifie s'il est égal à l'élémentsearchElement. Si une correspondance est trouvée,anyMatch()retournetrueimmédiatement.
Cette approche basée sur les flux atteint le même résultat que la boucle for, mais dans un style plus déclaratif – vous décrivez ce que vous voulez faire (vérifier si un élément correspond à la condition) plutôt que comment le faire (itérer étape par étape).
Enregistrez le fichier ArraySearch.java (Ctrl+S ou Cmd+S).
Maintenant, compilez et exécutez le programme modifié dans le terminal depuis le répertoire ~/project :
Compilez le code :
javac ArraySearch.java
Exécutez le code compilé :
java ArraySearch
Vous devriez voir la même sortie que précédemment :
Cherry was found in the array.
Encore une fois, n'hésitez pas à changer l'élément searchElement pour tester le cas else.
Gérer les éléments null
Dans cette étape, nous allons examiner un scénario courant en Java : la gestion des valeurs null dans les tableaux. Si un tableau contient des éléments null, nos méthodes précédentes pourraient rencontrer des problèmes. Nous apprendrons à gérer en toute sécurité les valeurs null lors de la recherche d'un élément.
Ouvrez à nouveau le fichier ~/project/ArraySearch.java dans l'éditeur de WebIDE.
Modifiez le tableau fruits pour inclure un élément null :
import java.util.Arrays;
import java.util.Objects; // Import the Objects class
public class ArraySearch {
public static void main(String[] args) {
// Define an array of strings with a null element
String[] fruits = {"Apple", null, "Banana", "Cherry", "Date", "Elderberry"};
// The element we want to search for
String searchElement = "Cherry";
// Use Arrays.stream() and handle nulls
boolean found = Arrays.stream(fruits)
.anyMatch(fruit -> Objects.equals(fruit, searchElement)); // Use Objects.equals
// Print the result
if (found) {
System.out.println(searchElement + " was found in the array.");
} else {
System.out.println(searchElement + " was not found in the array.");
}
// Let's also search for null itself
String searchNullElement = null;
boolean foundNull = Arrays.stream(fruits)
.anyMatch(fruit -> Objects.equals(fruit, searchNullElement));
if (foundNull) {
System.out.println("null was found in the array.");
} else {
System.out.println("null was not found in the array.");
}
}
}
Voici ce que nous avons modifié :
import java.util.Objects;: Nous importons la classeObjects, qui fournit des méthodes utilitaires pour les objets, y compris la gestion sécurisée des valeursnull.String[] fruits = {"Apple", null, "Banana", "Cherry", "Date", "Elderberry"};: Nous avons ajouténullcomme deuxième élément du tableaufruits..anyMatch(fruit -> Objects.equals(fruit, searchElement)): Au lieu defruit.equals(searchElement), nous utilisons maintenantObjects.equals(fruit, searchElement). La méthodeObjects.equals()est conçue pour gérer les valeursnullde manière appropriée. Elle retournetruesi les deux arguments sontnull, et elle évite de lancer uneNullPointerExceptionsi le premier argument (fruitdans ce cas) estnull.- Nous avons ajouté une deuxième recherche pour démontrer la recherche de la valeur
nullelle - même dans le tableau en utilisant la même méthodeObjects.equals().
Enregistrez le fichier ArraySearch.java (Ctrl+S ou Cmd+S).
Compilez et exécutez le programme modifié dans le terminal depuis le répertoire ~/project :
Compilez le code :
javac ArraySearch.java
Exécutez le code compilé :
java ArraySearch
Vous devriez voir la sortie suivante, montrant que tant "Cherry" que null ont été trouvés :
Cherry was found in the array.
null was found in the array.
L'utilisation de Objects.equals() est la méthode recommandée pour comparer des objets, en particulier lorsqu'il y a une possibilité que l'un ou les deux objets soient null. Cela évite les erreurs inattendues de type NullPointerException.
Résumé
Dans ce laboratoire, vous avez appris une méthode fondamentale pour vérifier si un élément spécifique existe dans un tableau Java : parcourir le tableau à l'aide d'une boucle for traditionnelle. Vous avez pratiqué la création d'un fichier Java, la définition d'un tableau et d'un élément de recherche, la mise en œuvre de la boucle pour comparer les éléments et l'utilisation d'un indicateur booléen pour suivre si l'élément a été trouvé. Cette pratique a démontré comment effectuer une opération de recherche de base et afficher le résultat en fonction de la présence de l'élément dans le tableau.



