'.toList()' Kullanımı
Coddy'nin Dart Journey'sinin Mantık & Akış bölümünün bir parçası. Ders 12 / 65.
Bir liste üzerinde map() ve where() gibi metotları kullandığınızda, bunlar yeni bir List döndürmezler; bir Iterable döndürürler. Bir Iterable istediğiniz dönüştürülmüş veya filtrelenmiş verileri içerse de, tanıdık liste metotlarını ve özelliklerini kullanmak için genellikle onu tekrar bir List yapısına dönüştürmeniz gerekir.
.toList() yöntemi bir Iterable'ı yeniden List'e dönüştürür. Bu dönüşüm, iterable'daki tüm öğeleri içeren yeni bir liste oluşturur ve alışık olduğunuz tüm standart liste işlemlerine erişmenizi sağlar.
List<String> words = ['apple', 'banana', 'cherry', 'date'];
// where() bir Iterable döndürür, bir List değil
var longWordsIterable = words.where((word) => word.length > 5);
// Iterable'ı bir List'e dönüştürün
List<String> longWordsList = longWordsIterable.toList();
print(longWordsList); // ['banana', 'cherry']Bu dönüştürme adımı, filtrelenmiş veya dönüştürülmüş verileriniz üzerinde ek liste işlemleri gerçekleştirmeniz gerektiğinde gereklidir. .toList() olmadan, tam bir List'ten daha sınırlı işlevselliğe sahip olan bir Iterable ile çalışıyor olurdunuz.
Görev
KolayKütüphane kitap öneri sistemini, kitapları tür tercihlerine göre filtreleyip sonuçları uygun bir liste biçimine dönüştürerek yöneten bir program oluştur. Programın şunları yapması gerekir:
- Kütüphane adını temsil eden bir dize girdisi oku
- Kitap adlarını temsil eden birden fazla dize girdisi oku (boş bir dize aldığında girdi sona erecek)
- Her kitap adına karşılık gelen kitap türlerini temsil eden birden fazla dize girdisi oku (boş bir dize aldığında girdi sona erecek)
- Filtreleme için tercih edilen türü temsil eden bir dize girdisi oku
- Tercih edilen türle eşleşen kitapları filtrelemek için
where()metodunu kullan - Filtrelenmiş iterable'ı uygun bir listeye dönüştürmek için
toList()metodunu kullan - Öneri sonuçlarını aşağıda gösterilen tam biçimde yazdır
Örneğin, kütüphane adı "City Library", kitaplar "The Great Gatsby", "Dune", "Pride and Prejudice", "1984", türler "Fiction", "Science Fiction", "Romance", "Fiction" ve tercih edilen tür "Fiction" ise programın çıktısı şöyle olmalıdır:
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 readyKütüphane adı "School Library", kitaplar "Harry Potter", "Lord of the Rings", türler "Fantasy", "Fantasy" ve tercih edilen tür "Mystery" ise programın çıktısı şöyle olmalıdır:
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 readyKütüphane adı "Community Library", kitap "To Kill a Mockingbird", tür "Classic" ve tercih edilen tür "Classic" ise programın çıktısı şöyle olmalıdır:
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 readyProgramın, kitapları türlerini tercih edilen türle eşleştirerek filtrelemek için where() metodunu, ardından elde edilen iterable'ı bir listeye dönüştürmek için toList() metodunu kullanması gerekir. Filtrelenmiş iterable parantez biçiminde, son liste ise köşeli parantez biçiminde gösterilmelidir.
Kendin dene
import 'dart:io';
void main() {
// Kütüphane adını oku
String? libraryName = stdin.readLineSync();
// Boş dize gelene kadar kitap başlıklarını oku
List<String> books = [];
while (true) {
String? book = stdin.readLineSync();
if (book == null || book.isEmpty) break;
books.add(book);
}
// Boş dize gelene kadar kitap türlerini oku
List<String> genres = [];
while (true) {
String? genre = stdin.readLineSync();
if (genre == null || genre.isEmpty) break;
genres.add(genre);
}
// Tercih edilen türü oku
String? preferredGenre = stdin.readLineSync();
// TODO: Kodunuzu aşağıya yazın
// Kitapları tercih edilen türe göre filtrelemek için where() metodunu kullanın
// Filtrelenmiş yinelenebilir nesneyi bir listeye dönüştürmek için toList() metodunu kullanın
// Sonuçları istenen formatta yazdırın
print('Library: $libraryName');
print('All books: $books');
print('All genres: $genres');
print('Filtering by genre: $preferredGenre');
// Filtrelenmiş kitapları (iterable) ve önerilen kitapları (list) yazdırın
// Toplam önerileri ve durumu yazdırın
}Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Mantık & Akış bölümündeki tüm dersler
1İleri Düzey Liste İşlemleri
Liste Özellikleri: first & lastListe Durumu: isEmpty & isNotEmptyBir Listeyi Tersine ÇevirmeListeye Ekleme: insertListeden Silme: removeWhereListede Bulma: indexOfBir Listeyi SıralamaBir Listeyi KarıştırmaÖzet - Liste Düzenleyici4İleri Seviye Map İşlemleri
Map Üzerinde GezinmeAnahtar ve Değer KontrolüMap Özellikleri: keys & valuesKoşullu Ekleme: putIfAbsentMap'ten Öge Kaldırmaİç İçe Map'lerÖzet - Envanter Güncelleme7İleri Seviye Fonksiyonlar
Anonim FonksiyonlarFonksiyonları Argüman Olarak AktarmaClosure'ları AnlamakÖzyinelemeye GirişÖzyinelemeli Fonksiyon: Geri SayımÖzyinelemeli Fonksiyon: FaktöriyelÖzet - Liste İşleyici10Son Meydan Okumalar
Meydan Okuma: Not SıralayıcıMeydan Okuma: Sesli Harf SayacıMeydan Okuma: FizzBuzz2Fonksiyonel Liste İşlemleri
'map' ile Dönüştürme'where' ile Filtreleme'.toList()' Kullanımı'any' ile Koşul Kontrolü'every' ile Koşullar'firstWhere' ile BulmaÖzet - Veri Filtreleme5Proje: Alışveriş Sepeti Hesaplayıcı
Proje KurulumuSepete Ürün Ekleme3Kümeler
Küme Nedir?Küme OluşturmaKümelere Eleman Ekleme ve ÇıkarmaKüme İçinde Eleman KontrolüListeyi Kümeye DönüştürmeKüme BirleşimiKüme KesişimiKüme FarkıÖzet - Benzersiz Davetli ListesiKendi başına pratik yap: Online Dart derleyicisi