Comment vérifier si un tableau contient un élément spécifique en Java

JavaJavaBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

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.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/BasicSyntaxGroup(["Basic Syntax"]) java(("Java")) -.-> java/StringManipulationGroup(["String Manipulation"]) java(("Java")) -.-> java/DataStructuresGroup(["Data Structures"]) java(("Java")) -.-> java/FileandIOManagementGroup(["File and I/O Management"]) java(("Java")) -.-> java/SystemandDataProcessingGroup(["System and Data Processing"]) java/BasicSyntaxGroup -.-> java/for_loop("For Loop") java/StringManipulationGroup -.-> java/strings("Strings") java/DataStructuresGroup -.-> java/arrays("Arrays") java/DataStructuresGroup -.-> java/arrays_methods("Arrays Methods") java/FileandIOManagementGroup -.-> java/stream("Stream") java/SystemandDataProcessingGroup -.-> java/object_methods("Object Methods") subgraph Lab Skills java/for_loop -.-> lab-559997{{"Comment vérifier si un tableau contient un élément spécifique en Java"}} java/strings -.-> lab-559997{{"Comment vérifier si un tableau contient un élément spécifique en Java"}} java/arrays -.-> lab-559997{{"Comment vérifier si un tableau contient un élément spécifique en Java"}} java/arrays_methods -.-> lab-559997{{"Comment vérifier si un tableau contient un élément spécifique en Java"}} java/stream -.-> lab-559997{{"Comment vérifier si un tableau contient un élément spécifique en Java"}} java/object_methods -.-> lab-559997{{"Comment vérifier si un tableau contient un élément spécifique en Java"}} end

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é fruits avec plusieurs noms de fruits.
  • String searchElement = "Cherry"; : Cette ligne déclare une variable de type chaîne de caractères searchElement et 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éenne found et l'initialise à false. Nous la définirons sur true si nous trouvons l'élément searchElement dans le tableau.
  • for (int i = 0; i < fruits.length; i++) : Il s'agit d'une boucle for standard qui parcourt le tableau. i commence à 0 et va jusqu'à (mais sans inclure) la longueur du tableau fruits.
  • if (fruits[i].equals(searchElement)) : À l'intérieur de la boucle, cette instruction if vérifie si l'élément actuel du tableau (fruits[i]) est égal à l'élément searchElement. 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 variable found sur true.
  • break; : Une fois l'élément trouvé, nous utilisons l'instruction break pour sortir de la boucle tôt, car il n'est plus nécessaire de continuer la recherche.
  • Le bloc if/else final affiche un message indiquant si l'élément searchElement a été trouvé en fonction de la valeur de la variable found.

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 classe Arrays pour utiliser sa méthode stream().
  • 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 tableau fruits en 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éthode anyMatch() vérifie si au moins un élément du flux correspond à la condition donnée. La condition est fournie sous forme d'une expression lambda fruit -> fruit.equals(searchElement). Cette expression lambda prend chaque fruit du flux et vérifie s'il est égal à l'élément searchElement. Si une correspondance est trouvée, anyMatch() retourne true immé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 nuls

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 classe Objects, qui fournit des méthodes utilitaires pour les objets, y compris la gestion sécurisée des valeurs null.
  • String[] fruits = {"Apple", null, "Banana", "Cherry", "Date", "Elderberry"}; : Nous avons ajouté null comme deuxième élément du tableau fruits.
  • .anyMatch(fruit -> Objects.equals(fruit, searchElement)) : Au lieu de fruit.equals(searchElement), nous utilisons maintenant Objects.equals(fruit, searchElement). La méthode Objects.equals() est conçue pour gérer les valeurs null de manière appropriée. Elle retourne true si les deux arguments sont null, et elle évite de lancer une NullPointerException si le premier argument (fruit dans ce cas) est null.
  • Nous avons ajouté une deuxième recherche pour démontrer la recherche de la valeur null elle - même dans le tableau en utilisant la même méthode Objects.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.