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.
Défi
FacileCréez un programme qui gère un système de recommandation de livres de bibliothèque en filtrant les livres en fonction des préférences de genre et en convertissant les résultats dans un format de liste approprié. Votre programme doit :
- Lire une chaîne de caractères en entrée représentant le nom de la bibliothèque
- Lire plusieurs chaînes de caractères en entrée représentant les titres des livres (la saisie s'arrête lorsque vous recevez une chaîne vide)
- Lire plusieurs chaînes de caractères en entrée représentant les genres de livres correspondant à chaque titre (la saisie s'arrête lorsque vous recevez une chaîne vide)
- Lire une chaîne de caractères en entrée représentant le genre préféré pour le filtrage
- Utiliser la méthode
where()pour filtrer les livres qui correspondent au genre préféré - Utiliser la méthode
toList()pour convertir l'itérable filtré en une liste appropriée - Afficher les résultats de la recommandation dans le format exact indiqué ci-dessous
Par exemple, si le nom de la bibliothèque est "City Library", les livres sont "The Great Gatsby", "Dune", "Pride and Prejudice", "1984", les genres sont "Fiction", "Science Fiction", "Romance", "Fiction", et 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 readySi le nom de la bibliothèque est "School Library", les livres sont "Harry Potter", "Lord of the Rings", les genres sont "Fantasy", "Fantasy", et 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 readySi le nom de la bibliothèque est "Community Library", le livre est "To Kill a Mockingbird", le genre est "Classic", et 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 readyVotre programme doit utiliser la méthode where() pour filtrer les livres en faisant correspondre leur genre avec le genre préféré, puis utiliser la méthode toList() pour convertir l'itérable résultant en une liste. L'itérable filtré doit être affiché au format parenthèses, tandis que la liste finale doit être affichée au format crochets.
Aide-mémoire
Des méthodes comme map() et where() retournent un Iterable, pas une List. Utilisez .toList() pour convertir un Iterable en une List :
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 conversion est essentielle lorsque vous devez effectuer des opérations de liste supplémentaires sur des données filtrées ou transformées.
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
}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
1Manipulation avancée des listes
Propriétés de liste : first & lastÉtat de la liste : isEmpty & isNotEmptyInverser une listeAjouter à une liste : insertSuppression dans une liste : removeWhereRechercher dans une liste : indexOfTrier une listeMélanger une listeRécapitulatif - Organisateur de liste4Manipulation avancée des Maps
Itérer sur une MapVérifier les clés et les valeursPropriétés de Map : keys & valuesAjout conditionnel : putIfAbsentSupprimer des entrées d'une MapMaps imbriquéesRécapitulatif - Mise à jour de l'inventaire2Opérations fonctionnelles sur les listes
Transformer avec 'map'Filtrer avec 'where'Utiliser '.toList()'Vérifier des conditions avec 'any'Conditions avec 'every'Trouver avec 'firstWhere'Récapitulatif - Filtrage de données3Les Ensembles
Qu'est-ce qu'un ensemble ?Créer un ensembleAjouter et supprimer des éléments d'un ensembleVérifier la présence d'éléments dans un ensembleConvertir une liste en ensembleUnion d'ensemblesIntersection d'ensemblesDifférence d'ensemblesRécapitulatif - Liste d'invités uniques