Menggunakan '.toList()'
Termasuk bagian Logika dan Alur dalam perjalanan Dart di Coddy. Pelajaran 12 dari 65.
Saat menggunakan method seperti map() dan where() pada list, method tersebut tidak mengembalikan List baru, tetapi mengembalikan Iterable. Meskipun Iterable berisi data yang sudah ditransformasi atau difilter sesuai keinginanmu, kamu sering perlu mengubahnya kembali menjadi List agar bisa menggunakan method dan property list yang sudah familier.
method .toList() mengonversi Iterable kembali menjadi List. Konversi ini membuat list baru yang berisi semua elemen dari iterable, sehingga kamu bisa menggunakan semua operasi list standar yang biasa kamu gunakan.
List<String> words = ['apple', 'banana', 'cherry', 'date'];
// where() menghasilkan Iterable, bukan List
var longWordsIterable = words.where((word) => word.length > 5);
// Ubah Iterable menjadi List
List<String> longWordsList = longWordsIterable.toList();
print(longWordsList); // ['banana', 'cherry']Langkah konversi ini penting saat kamu perlu melakukan operasi list tambahan pada data yang telah difilter atau ditransformasi. Tanpa .toList(), kamu akan bekerja dengan Iterable, yang fungsinya lebih terbatas daripada List lengkap.
Tantangan
MudahBuat program yang mengelola sistem rekomendasi buku perpustakaan dengan memfilter buku berdasarkan preferensi genre dan mengonversi hasilnya ke format list yang sesuai. Programmu harus:
- Membaca input string yang berisi nama perpustakaan
- Membaca beberapa input string yang berisi judul buku (input berakhir saat kamu menerima string kosong)
- Membaca beberapa input string yang berisi genre buku yang sesuai dengan setiap judul (input berakhir saat kamu menerima string kosong)
- Membaca input string yang berisi genre pilihan untuk digunakan sebagai filter
- Menggunakan method
where()untuk memfilter buku yang cocok dengan genre pilihan - Menggunakan method
toList()untuk mengonversi iterable yang telah difilter menjadi list yang sesuai - Mencetak hasil rekomendasi dalam format persis seperti yang ditunjukkan di bawah
Misalnya, jika nama perpustakaannya adalah "City Library", bukunya adalah "The Great Gatsby", "Dune", "Pride and Prejudice", "1984", genrenya adalah "Fiction", "Science Fiction", "Romance", "Fiction", dan genre pilihannya adalah "Fiction", programmu harus menghasilkan output berikut:
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 readyJika nama perpustakaannya adalah "School Library", bukunya adalah "Harry Potter", "Lord of the Rings", genrenya adalah "Fantasy", "Fantasy", dan genre pilihannya adalah "Mystery", programmu harus menghasilkan output berikut:
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 readyJika nama perpustakaannya adalah "Community Library", bukunya adalah "To Kill a Mockingbird", genrenya adalah "Classic", dan genre pilihannya adalah "Classic", programmu harus menghasilkan output berikut:
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 readyProgrammu harus menggunakan method where() untuk memfilter buku dengan mencocokkan genrenya dengan genre pilihan, lalu menggunakan method toList() untuk mengonversi iterable hasilnya menjadi list. Iterable yang telah difilter harus ditampilkan dalam format tanda kurung, sedangkan list akhir harus ditampilkan dalam format tanda kurung siku.
Coba sendiri
import 'dart:io';
void main() {
// Baca nama library
String? libraryName = stdin.readLineSync();
// Baca judul buku hingga menemukan string kosong
List<String> books = [];
while (true) {
String? book = stdin.readLineSync();
if (book == null || book.isEmpty) break;
books.add(book);
}
// Baca genre buku hingga menemukan string kosong
List<String> genres = [];
while (true) {
String? genre = stdin.readLineSync();
if (genre == null || genre.isEmpty) break;
genres.add(genre);
}
// Baca genre yang disukai
String? preferredGenre = stdin.readLineSync();
// TODO: Tulis kodemu di bawah ini
// Gunakan method where() untuk memfilter buku berdasarkan genre yang disukai
// Gunakan method toList() untuk mengubah iterable yang telah difilter menjadi list
// Cetak hasilnya dalam format yang diminta
print('Library: $libraryName');
print('All books: $books');
print('All genres: $genres');
print('Filtering by genre: $preferredGenre');
// Cetak buku yang telah difilter (iterable) dan buku yang direkomendasikan (list)
// Cetak jumlah rekomendasi dan status
}Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Manipulasi list Tingkat Lanjut
Properti list: first dan lastStatus list: isEmpty dan isNotEmpMembalikkan listMenambahkan ke list: insertMenghapus dari list: removeWhereMencari dalam list: indexOfMengurutkan listMengacak listRekap: Pengatur list4Manipulasi Map Lanjutan
Melakukan perulangan pada MapMemeriksa kunci dan nilaiProperti Map: kunci dan nilaiPenambahan Bersyarat: putIfAbsentMenghapus Entri dari MapMap BersarangRingkasan: Pembaruan Inventaris2Operasi Fungsional pada list
Mengubah dengan 'map'Menyaring dengan 'where'Menggunakan '.toList()'Memeriksa Kondisi dengan 'any'Kondisi dengan 'every'Menemukan dengan 'firstWhere'Ulasan: Penyaringan Data5Proyek: Perhitungan Keranjang Belanja
Menyiapkan ProyekMenambahkan Barang ke Keranjang3set
Apa itu set?Membuat setMenambahkan dan menghapus elemen dari setMemeriksa elemen dalam setMengubah list menjadi setGabungan setIrisan setSelisih setRangkuman: Daftar tamu unikLatihan sendiri: Compiler Dart online