Menghapus Entri dari Map
Termasuk bagian Logika dan Alur dalam perjalanan Dart di Coddy. Pelajaran 30 dari 65.
Saat mengelola data dalam Map, kamu sering perlu menghapus entri yang tidak lagi dibutuhkan. Method remove() menyediakan cara langsung untuk menghapus pasangan kunci-nilai dari map menggunakan kuncinya.
method remove() menerima satu parameter: kunci entri yang ingin kamu hapus. Saat dipanggil, method ini menghapus kunci dan nilai terkaitnya dari map. Jika kunci tersebut tidak ada di map, method ini tidak melakukan apa pun tanpa menyebabkan error.
Map<String, double> inventory = {
'Laptop': 999.99,
'Mouse': 25.50,
'Keyboard': 75.00
};
// Hapus mouse dari inventory
inventory.remove('Mouse');
print(inventory); // {Laptop: 999.99, Keyboard: 75.0}
// Mencoba menghapus item yang tidak ada tidak mengubah apa pun
inventory.remove('Tablet');
print(inventory); // {Laptop: 999.99, Keyboard: 75.0}Method ini penting untuk menjaga map tetap rapi dan terbaru di aplikasimu. Baik kamu mengelola inventaris, data pengguna, maupun kumpulan lain yang itemnya perlu dihapus, remove() menyediakan cara yang aman dan efisien untuk menghapus entri berdasarkan kuncinya.
Tantangan
MudahBuat program yang mengelola layanan streaming musik digital dengan melacak pustaka lagu dan menghapus lagu yang tidak lagi tersedia karena masalah lisensi. Programmu harus:
- Membaca input string yang mewakili nama layanan streaming
- Membaca beberapa pasangan input yang mewakili judul lagu dan jumlah streamingnya (input akan berakhir saat kamu menerima
"library_done") - Membaca beberapa input string yang mewakili lagu yang akan dihapus karena masalah lisensi (input akan berakhir saat kamu menerima
"removal_done") - Membuat Map untuk menyimpan judul lagu sebagai kunci dan jumlah streamingnya sebagai nilai
- Menggunakan method
remove()untuk menghapus setiap lagu yang ditentukan dari pustaka - Menghitung statistik pustaka dan mencetak laporan penghapusan dengan format persis seperti yang ditunjukkan di bawah
Misalnya, jika nama layanannya adalah "MusicStream Pro", pustakanya berisi "Bohemian Rhapsody" dengan 2500000 streaming, "Imagine" dengan 1800000 streaming, "Hotel California" dengan 2200000 streaming, "Stairway to Heaven" dengan 1900000 streaming, dan lagu yang akan dihapus adalah "Imagine", "Yesterday", "Hotel California", programmu harus menghasilkan:
Service: MusicStream Pro
Original Library: {Bohemian Rhapsody: 2500000, Imagine: 1800000, Hotel California: 2200000, Stairway to Heaven: 1900000}
Removal Process:
Removing 'Imagine': Song removed (had 1800000 streams)
Removing 'Yesterday': Song not found in library
Removing 'Hotel California': Song removed (had 2200000 streams)
Updated Library: {Bohemian Rhapsody: 2500000, Stairway to Heaven: 1900000}
Library Statistics:
Songs before removal: 4
Songs after removal: 2
Songs successfully removed: 2
Songs not found: 1
Total streams lost: 4000000
Remaining total streams: 4400000
Status: Library update completedJika nama layanannya adalah "SoundWave", pustakanya berisi "Shape of You" dengan 3200000 streaming, "Blinding Lights" dengan 2800000 streaming, "Someone Like You" dengan 2100000 streaming, dan lagu yang akan dihapus adalah "Blinding Lights", "Perfect", programmu harus menghasilkan:
Service: SoundWave
Original Library: {Shape of You: 3200000, Blinding Lights: 2800000, Someone Like You: 2100000}
Removal Process:
Removing 'Blinding Lights': Song removed (had 2800000 streams)
Removing 'Perfect': Song not found in library
Updated Library: {Shape of You: 3200000, Someone Like You: 2100000}
Library Statistics:
Songs before removal: 3
Songs after removal: 2
Songs successfully removed: 1
Songs not found: 1
Total streams lost: 2800000
Remaining total streams: 5300000
Status: Library update completedJika nama layanannya adalah "AudioHub", pustakanya berisi "Bad Guy" dengan 1500000 streaming, "Watermelon Sugar" dengan 1700000 streaming, "Levitating" dengan 1400000 streaming, "Good 4 U" dengan 1600000 streaming, dan lagu yang akan dihapus adalah "Bad Guy", "Levitating", "Good 4 U", "Drivers License", programmu harus menghasilkan:
Service: AudioHub
Original Library: {Bad Guy: 1500000, Watermelon Sugar: 1700000, Levitating: 1400000, Good 4 U: 1600000}
Removal Process:
Removing 'Bad Guy': Song removed (had 1500000 streams)
Removing 'Levitating': Song removed (had 1400000 streams)
Removing 'Good 4 U': Song removed (had 1600000 streams)
Removing 'Drivers License': Song not found in library
Updated Library: {Watermelon Sugar: 1700000}
Library Statistics:
Songs before removal: 4
Songs after removal: 1
Songs successfully removed: 3
Songs not found: 1
Total streams lost: 4500000
Remaining total streams: 1700000
Status: Library update completedProgrammu harus menggunakan method remove() untuk menghapus lagu dari Map. Lacak lagu mana yang berhasil dihapus dan mana yang tidak ditemukan. Hitung total streaming yang hilang dengan menjumlahkan jumlah streaming lagu yang berhasil dihapus. Format inputnya adalah: nama layanan, lalu judul lagu dan jumlah streaming secara bergantian (sebagai string yang perlu dikonversi menjadi integer), diakhiri dengan "library_done", lalu judul lagu yang akan dihapus, diakhiri dengan "removal_done".
Coba sendiri
import 'dart:io';
void main() {
// Baca nama layanan
String? serviceName = stdin.readLineSync();
// Buat Map untuk menyimpan judul lagu dan jumlah pemutaran
Map<String, int> songLibrary = {};
// Baca data library lagu
while (true) {
String? input = stdin.readLineSync();
if (input == "library_done") break;
String songTitle = input!;
String? streamCountStr = stdin.readLineSync();
int streamCount = int.parse(streamCountStr!);
songLibrary[songTitle] = streamCount;
}
// Baca daftar lagu yang akan dihapus
List<String> songsToRemove = [];
while (true) {
String? input = stdin.readLineSync();
if (input == "removal_done") break;
songsToRemove.add(input!);
}
// TODO: Tulis kodemu di bawah ini
// Proses penghapusan lagu menggunakan method remove()
// Catat statistik dan hasilkan output dalam format yang diminta
// Cetak hasilnya dalam format yang diminta
// Ingat untuk menyertakan: Nama layanan, Library awal, Proses penghapusan,
// Library terbaru, dan Statistik library
}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