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 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 :
- Lire une entrée de type chaîne représentant le nom de la bibliothèque
- 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)
- 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)
- Lire une entrée de type chaîne représentant le genre préféré à utiliser pour le filtrage
- Utiliser la méthode
where()pour filtrer les livres correspondant 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 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 readySi 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 readySi 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 readyVotre 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
}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 uniquesEntraînez-vous par vous-même : Compilateur Dart en ligne