Menu
Coddy logo textTech

Rechercher dans une liste : indexOf

Fait partie de la section Logique & Flux du Journey Dart de Coddy — leçon 6 sur 65.

Lorsque vous avez besoin de trouver où un élément spécifique est situé dans une liste, Dart fournit la méthode indexOf(). Cette méthode parcourt la liste et renvoie la position de l'index de la première occurrence de l'élément que vous recherchez.

La méthode indexOf() prend l'élément que vous souhaitez trouver comme paramètre et renvoie un entier. Si l'élément existe dans la liste, elle renvoie la position de l'index (en commençant par 0). Si l'élément n'est pas trouvé, elle renvoie -1.

List<String> fruits = ['apple', 'banana', 'orange', 'banana'];

int appleIndex = fruits.indexOf('apple');    // 0
int bananaIndex = fruits.indexOf('banana');  // 1 (première occurrence)
int grapeIndex = fruits.indexOf('grape');    // -1 (non trouvé)

Cette méthode est particulièrement utile lorsque vous avez besoin de connaître la position d'un élément avant d'effectuer des opérations telles que l'insertion ou la suppression à des emplacements spécifiques. N'oubliez pas que indexOf() ne trouve que la première correspondance, donc si un élément apparaît plusieurs fois, vous obtiendrez l'index de sa première occurrence.

challenge icon

Défi

Facile

Créez un programme qui gère un système de recherche de livres de bibliothèque en trouvant l'emplacement de livres spécifiques sur les étagères. Votre programme doit :

  1. Lire une entrée de type chaîne de caractères représentant le nom de la section de la bibliothèque
  2. Lire plusieurs entrées de type chaîne de caractères représentant les titres des livres sur l'étagère (la saisie se terminera lorsque vous recevrez une chaîne vide)
  3. Lire une entrée de type chaîne de caractères représentant le titre du livre à rechercher
  4. Utiliser la méthode indexOf() pour trouver la position du livre demandé
  5. Afficher les résultats de la recherche exactement au format indiqué ci-dessous

Par exemple, si la section de la bibliothèque est "Science Fiction", que les livres sont "Dune", "Foundation", "Neuromancer", "Foundation", "Ender's Game", et que le livre recherché est "Foundation", votre programme doit afficher :

Library Section: Science Fiction
Books on shelf: [Dune, Foundation, Neuromancer, Foundation, Ender's Game]
Searching for: Foundation
Book found at position: 1
Status: Book located successfully

Si la section de la bibliothèque est "Mystery", que les livres sont "Sherlock Holmes", "Agatha Christie", "The Maltese Falcon", et que le livre recherché est "Gone Girl", votre programme doit afficher :

Library Section: Mystery
Books on shelf: [Sherlock Holmes, Agatha Christie, The Maltese Falcon]
Searching for: Gone Girl
Book found at position: -1
Status: Book not available

Votre programme doit utiliser la méthode indexOf() pour rechercher le livre. Lorsque le livre est trouvé (position >= 0), affichez "Book located successfully". Lorsque le livre n'est pas trouvé (position = -1), affichez "Book not available". Rappelez-vous que indexOf() renvoie la position de la première occurrence si le livre apparaît plusieurs fois.

Aide-mémoire

Utilisez indexOf() pour trouver la position d'un élément dans une liste :

List<String> fruits = ['apple', 'banana', 'orange', 'banana'];

int appleIndex = fruits.indexOf('apple');    // 0
int bananaIndex = fruits.indexOf('banana');  // 1 (première occurrence)
int grapeIndex = fruits.indexOf('grape');    // -1 (non trouvé)

La méthode renvoie la position de l'index (en commençant par 0) s'il est trouvé, ou -1 si l'élément n'existe pas. Elle ne trouve que la première occurrence des éléments en double.

Essayez vous-même

import 'dart:io';

void main() {
  // Lire le nom de la section de la bibliothèque
  String? section = stdin.readLineSync();
  
  // Lire les titres des livres jusqu'à une chaîne vide
  List<String> books = [];
  String? book;
  while ((book = stdin.readLineSync()) != null && book!.isNotEmpty) {
    books.add(book);
  }
  
  // Lire le livre à rechercher
  String? searchBook = stdin.readLineSync();
  
  // TODO: Écrivez votre code ci-dessous
  // Utilisez la méthode indexOf() pour trouver la position du livre
  
  // Afficher les résultats au format requis
  print('Library Section: $section');
  print('Books on shelf: $books');
  print('Searching for: $searchBook');
  // Afficher la position et le statut en fonction de vos résultats de recherche
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logique & Flux