Properti Map: kunci dan nilai
Termasuk bagian Logika dan Alur dalam perjalanan Dart di Coddy. Pelajaran 28 dari 65.
Saat bekerja dengan koleksi Map, terkadang kamu perlu mengambil semua kunci atau semua nilai secara terpisah. Dart menyediakan dua property yang praktis untuk ini: .keys dan .values.
Property .keys mengembalikan objek yang dapat diiterasi berisi semua kunci dari map, sedangkan .values mengembalikan objek yang dapat diiterasi berisi semua nilai yang sesuai. Property ini sangat berguna saat kamu perlu memproses kunci dan nilai secara terpisah.
Map<String, double> inventory = {
'Laptop': 999.99,
'Mouse': 25.50,
'Keyboard': 75.00
};
Iterable<String> productNames = inventory.keys;
Iterable<double> prices = inventory.values;
print(productNames); // (Laptop, Mouse, Keyboard)
print(prices); // (999.99, 25.5, 75.0)Karena property ini mengembalikan iterable, bukan list, kamu bisa mengubahnya menjadi list menggunakan .toList() jika kamu memerlukan fungsi khusus untuk list. Pemisahan kunci dan nilai ini sangat membantu saat kamu perlu menganalisis atau memanipulasi salah satu aspek datamu secara terpisah dari aspek lainnya.
Tantangan
MudahBuat program yang mengelola sistem perpustakaan digital dengan menganalisis koleksi buku dan mengambil informasi tentang judul serta tahun terbitnya. Programmu harus:
- Membaca input string yang mewakili nama perpustakaan
- Membaca beberapa pasang input yang mewakili judul buku dan tahun terbitnya (input akan berakhir saat kamu menerima
"catalog_done") - Membuat Map untuk menyimpan setiap judul buku sebagai kunci dan tahun terbitnya sebagai nilai
- Menggunakan property
.keysuntuk mengambil semua judul buku dan mengubahnya menjadi List - Menggunakan property
.valuesuntuk mengambil semua tahun terbit dan mengubahnya menjadi List - Menemukan buku tertua dengan mencari tahun minimum dari nilai-nilai tersebut
- Menemukan buku terbaru dengan mencari tahun maksimum dari nilai-nilai tersebut
- Mencetak analisis perpustakaan dalam format persis seperti yang ditunjukkan di bawah ini
Misalnya, jika nama perpustakaannya adalah "Central Library" dan katalognya mencakup "To Kill a Mockingbird" dengan tahun 1960, "1984" dengan tahun 1949, "The Great Gatsby" dengan tahun 1925, dan "Harry Potter" dengan tahun 1997, programmu harus menghasilkan:
Library: Central Library
Book Collection Analysis:
All book titles: [To Kill a Mockingbird, 1984, The Great Gatsby, Harry Potter]
All publication years: [1960, 1949, 1925, 1997]
Total books in collection: 4
Oldest book year: 1925
Newest book year: 1997
Collection span: 72 years
Status: Library catalog analysis completedJika nama perpustakaannya adalah "University Library" dan katalognya mencakup "Pride and Prejudice" dengan tahun 1813, "Moby Dick" dengan tahun 1851, dan "Brave New World" dengan tahun 1932, programmu harus menghasilkan:
Library: University Library
Book Collection Analysis:
All book titles: [Pride and Prejudice, Moby Dick, Brave New World]
All publication years: [1813, 1851, 1932]
Total books in collection: 3
Oldest book year: 1813
Newest book year: 1932
Collection span: 119 years
Status: Library catalog analysis completedJika nama perpustakaannya adalah "Community Library" dan katalognya mencakup "The Hobbit" dengan tahun 1937, "Dune" dengan tahun 1965, "Neuromancer" dengan tahun 1984, "The Martian" dengan tahun 2011, dan "Klara and the Sun" dengan tahun 2021, programmu harus menghasilkan:
Library: Community Library
Book Collection Analysis:
All book titles: [The Hobbit, Dune, Neuromancer, The Martian, Klara and the Sun]
All publication years: [1937, 1965, 1984, 2011, 2021]
Total books in collection: 5
Oldest book year: 1937
Newest book year: 2021
Collection span: 84 years
Status: Library catalog analysis completedProgrammu harus menggunakan property .keys untuk mengambil semua judul buku dan property .values untuk mengambil semua tahun terbit. Ubah kedua iterable menjadi Lists menggunakan .toList(). Hitung rentang koleksi dengan mengurangi tahun tertua dari tahun terbaru. Format inputnya adalah: nama perpustakaan, lalu judul buku dan tahun terbit secara bergantian (sebagai string yang perlu diubah menjadi integer), diakhiri dengan "catalog_done".
Coba sendiri
import 'dart:io';
void main() {
// Baca nama library
String? libraryName = stdin.readLineSync();
// Buat Map untuk menyimpan judul buku dan tahun terbit
Map<String, int> bookCatalog = {};
// Baca judul buku dan tahun terbit hingga "catalog_done"
while (true) {
String? input = stdin.readLineSync();
if (input == "catalog_done") {
break;
}
String bookTitle = input!;
String? yearInput = stdin.readLineSync();
int publicationYear = int.parse(yearInput!);
bookCatalog[bookTitle] = publicationYear;
}
// TODO: Tulis kodemu di bawah ini
// Ambil judul buku menggunakan property .keys dan ubah menjadi List
// Ambil tahun terbit menggunakan property .values dan ubah menjadi List
// Cari tahun terbit paling lama dan paling baru
// Hitung rentang tahun koleksi
// Cetak analisis library dalam format yang diminta
print("Library: $libraryName");
print("Book Collection Analysis:");
// Tambahkan pernyataan output-mu di sini
}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