Menu
Coddy logo textTech

Utiliser '.toList()'

Fait partie de la section Logique & Flux du Journey Dart de Coddy. Leçon 12 sur 65.

Lorsque vous utilisez des méthodes comme map() et where() sur une liste, elles ne retournent pas une nouvelle List - elles retournent un Iterable. Bien qu'un Iterable contienne les données transformées ou filtrées que vous souhaitez, vous avez souvent besoin de le reconvertir en une List pour utiliser les méthodes et propriétés de liste familières.

La méthode .toList() convertit un Iterable en une List. Cette conversion crée une nouvelle liste contenant tous les éléments de l'itérable, vous donnant accès à toutes les opérations de liste standard auxquelles vous êtes habitué.

List<String> words = ['apple', 'banana', 'cherry', 'date'];

// where() retourne un Iterable, pas une List
var longWordsIterable = words.where((word) => word.length > 5);

// Convertir l'Iterable en une List
List<String> longWordsList = longWordsIterable.toList();
print(longWordsList);  // ['banana', 'cherry']

Cette étape de conversion est essentielle lorsque vous devez effectuer des opérations de liste supplémentaires sur vos données filtrées ou transformées. Sans .toList(), vous travailleriez avec un Iterable, qui possède des fonctionnalités plus limitées qu'une List complète.

challenge icon

Défi

Facile

Créez un programme qui gère un système de recommandation de livres pour une bibliothèque en filtrant les livres selon les préférences de genre et en convertissant les résultats au format de liste approprié. Votre programme doit :

  1. Lire une entrée de type chaîne représentant le nom de la bibliothèque
  2. Lire plusieurs entrées de type chaîne représentant les titres des livres (la saisie se terminera lorsque vous recevrez une chaîne vide)
  3. Lire plusieurs entrées de type chaîne représentant les genres des livres correspondant à chaque titre (la saisie se terminera lorsque vous recevrez une chaîne vide)
  4. Lire une entrée de type chaîne représentant le genre préféré à utiliser pour le filtrage
  5. Utiliser la méthode where() pour filtrer les livres correspondant au genre préféré
  6. Utiliser la méthode toList() pour convertir l’itérable filtré en une liste appropriée
  7. Afficher les résultats des recommandations dans le format exact indiqué ci-dessous

Par exemple, si le nom de la bibliothèque est "City Library", que les livres sont "The Great Gatsby", "Dune", "Pride and Prejudice", "1984", que les genres sont "Fiction", "Science Fiction", "Romance", "Fiction", et que le genre préféré est "Fiction", votre programme doit afficher :

Library: City Library
All books: [The Great Gatsby, Dune, Pride and Prejudice, 1984]
All genres: [Fiction, Science Fiction, Romance, Fiction]
Filtering by genre: Fiction
Filtered books (iterable): (The Great Gatsby, 1984)
Recommended books (list): [The Great Gatsby, 1984]
Total recommendations: 2
Status: Recommendations ready

Si le nom de la bibliothèque est "School Library", que les livres sont "Harry Potter", "Lord of the Rings", que les genres sont "Fantasy", "Fantasy", et que le genre préféré est "Mystery", votre programme doit afficher :

Library: School Library
All books: [Harry Potter, Lord of the Rings]
All genres: [Fantasy, Fantasy]
Filtering by genre: Mystery
Filtered books (iterable): ()
Recommended books (list): []
Total recommendations: 0
Status: Recommendations ready

Si le nom de la bibliothèque est "Community Library", que le livre est "To Kill a Mockingbird", que le genre est "Classic", et que le genre préféré est "Classic", votre programme doit afficher :

Library: Community Library
All books: [To Kill a Mockingbird]
All genres: [Classic]
Filtering by genre: Classic
Filtered books (iterable): (To Kill a Mockingbird)
Recommended books (list): [To Kill a Mockingbird]
Total recommendations: 1
Status: Recommendations ready

Votre programme doit utiliser la méthode where() pour filtrer les livres en comparant leur genre avec le genre préféré, puis utiliser la méthode toList() pour convertir l’itérable obtenu en liste. L’itérable filtré doit être affiché entre parenthèses, tandis que la liste finale doit être affichée entre crochets.

Essayez vous-même

import 'dart:io';

void main() {
  // Lire le nom de la bibliothèque
  String? libraryName = stdin.readLineSync();
  
  // Lire les titres des livres jusqu'à une chaîne vide
  List<String> books = [];
  while (true) {
    String? book = stdin.readLineSync();
    if (book == null || book.isEmpty) break;
    books.add(book);
  }
  
  // Lire les genres de livres jusqu'à une chaîne vide
  List<String> genres = [];
  while (true) {
    String? genre = stdin.readLineSync();
    if (genre == null || genre.isEmpty) break;
    genres.add(genre);
  }
  
  // Lire le genre préféré
  String? preferredGenre = stdin.readLineSync();
  
  // TODO: Écrivez votre code ci-dessous
  // Utilisez la méthode where() pour filtrer les livres par genre préféré
  // Utilisez la méthode toList() pour convertir l'itérable filtré en liste
  
  // Afficher les résultats au format requis
  print('Library: $libraryName');
  print('All books: $books');
  print('All genres: $genres');
  print('Filtering by genre: $preferredGenre');
  // Afficher les livres filtrés (itérable) et les livres recommandés (liste)
  // Afficher le nombre total de recommandations et le statut
}
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

Entraînez-vous par vous-même : Compilateur Dart en ligne