Mengubah list menjadi set
Termasuk bagian Logika dan Alur dalam perjalanan Dart di Coddy. Pelajaran 21 dari 65.
Salah satu penerapan Set yang paling praktis adalah menghapus elemen duplikat dari List. Karena set secara otomatis menghapus duplikat, kamu bisa dengan mudah mengubah list yang memiliki nilai berulang menjadi kumpulan elemen unik.
Untuk mengonversi List menjadi Set, kamu cukup meneruskan list ke konstruktor Set.from(). Ini membuat set baru yang berisi semua elemen unik dari list asli.
List<int> numbersWithDuplicates = [1, 2, 2, 3, 3, 3, 4, 5, 5];
Set<int> uniqueNumbers = Set.from(numbersWithDuplicates);
print(uniqueNumbers); // {1, 2, 3, 4, 5}Jika kamu memerlukan hasilnya kembali sebagai List (mungkin untuk menjaga kompatibilitas dengan bagian lain dari kodemu), kamu dapat mengonversi set kembali menjadi list menggunakan toList(). Ini menghasilkan list yang hanya berisi elemen unik dari data aslinya.
List<int> uniqueList = Set.from(numbersWithDuplicates).toList();
print(uniqueList); // [1, 2, 3, 4, 5]Pola List → Set → List ini sangat umum saat kamu perlu membersihkan data dengan menghapus duplikat sambil mempertahankan struktur list untuk pemrosesan lebih lanjut.
Tantangan
MudahBuat program yang mengelola sistem pembersihan data dengan menghapus entri duplikat dari respons survei. Programmu harus:
- Membaca input string yang mewakili judul survei
- Membaca beberapa input string yang mewakili respons survei (input akan berakhir saat kamu menerima
"responses_done") - Membuat List untuk menyimpan semua respons asli, termasuk duplikat
- Menggunakan
Set.from()untuk mengubah list menjadi Set, yang otomatis menghapus duplikat - Menggunakan
toList()untuk mengubah Set kembali menjadi List berisi respons unik - Mencetak hasil pembersihan data dalam format persis seperti yang ditampilkan di bawah ini
Misalnya, jika judul surveinya adalah "Customer Satisfaction Survey" dan responsnya adalah "Excellent", "Good", "Excellent", "Fair", "Good", "Excellent", "Poor", programmu harus menghasilkan output:
Survey: Customer Satisfaction Survey
Original responses: [Excellent, Good, Excellent, Fair, Good, Excellent, Poor]
Total responses collected: 7
Converting to Set to remove duplicates...
Unique responses (Set): {Excellent, Good, Fair, Poor}
Converting back to List...
Cleaned responses: [Excellent, Good, Fair, Poor]
Duplicates removed: 3
Final unique responses: 4
Status: Data cleaning completed successfullyJika judul surveinya adalah "Product Feedback" dan responsnya adalah "Like", "Dislike", "Like", "Like", programmu harus menghasilkan output:
Survey: Product Feedback
Original responses: [Like, Dislike, Like, Like]
Total responses collected: 4
Converting to Set to remove duplicates...
Unique responses (Set): {Like, Dislike}
Converting back to List...
Cleaned responses: [Like, Dislike]
Duplicates removed: 2
Final unique responses: 2
Status: Data cleaning completed successfullyJika judul surveinya adalah "Event Rating" dan responsnya adalah "Amazing", "Okay", "Great", programmu harus menghasilkan output:
Survey: Event Rating
Original responses: [Amazing, Okay, Great]
Total responses collected: 3
Converting to Set to remove duplicates...
Unique responses (Set): {Amazing, Okay, Great}
Converting back to List...
Cleaned responses: [Amazing, Okay, Great]
Duplicates removed: 0
Final unique responses: 3
Status: Data cleaning completed successfullyProgrammu harus menunjukkan pola lengkap List → Set → List. Pertama, simpan semua respons dalam List, lalu gunakan Set.from() untuk membuat Set dari List, dan terakhir, gunakan toList() untuk mengubah Set kembali menjadi List. Hitung jumlah duplikat yang dihapus dengan mengurangi jumlah akhir respons unik dari jumlah total respons asli.
Coba sendiri
import 'dart:io';
void main() {
// Baca judul survei
String? surveyTitle = stdin.readLineSync();
// Baca respons survei hingga "responses_done"
List<String> originalResponses = [];
String? response;
while ((response = stdin.readLineSync()) != "responses_done") {
if (response != null) {
originalResponses.add(response);
}
}
// TODO: Tulis kodemu di bawah ini
// 1. Gunakan Set.from() untuk mengubah list menjadi Set (menghapus duplikat)
// 2. Gunakan toList() untuk mengubah Set kembali menjadi List
// 3. Hitung jumlah duplikat yang dihapus dan jumlah akhir
// Cetak hasilnya dalam format yang diminta
print("Survey: $surveyTitle");
print("Original responses: $originalResponses");
// Tambahkan pernyataan print yang tersisa 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