Menu
CoddyTech

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.

challenge icon

Tantangan

Mudah

Buat program yang mengelola sistem pembersihan data dengan menghapus entri duplikat dari respons survei. Programmu harus:

  1. Membaca input string yang mewakili judul survei
  2. Membaca beberapa input string yang mewakili respons survei (input akan berakhir saat kamu menerima "responses_done")
  3. Membuat List untuk menyimpan semua respons asli, termasuk duplikat
  4. Menggunakan Set.from() untuk mengubah list menjadi Set, yang otomatis menghapus duplikat
  5. Menggunakan toList() untuk mengubah Set kembali menjadi List berisi respons unik
  6. 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 successfully

Jika 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 successfully

Jika 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 successfully

Programmu 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
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler Dart online