Menu
CoddyTech

Gabungan set

Termasuk bagian Logika dan Alur dalam perjalanan Dart di Coddy. Pelajaran 22 dari 65.

Jika kamu memiliki dua koleksi Set yang terpisah, kamu dapat menggabungkannya menjadi satu set yang berisi semua elemen unik dari keduanya menggunakan method union(). Operasi ini membuat set baru yang mencakup setiap elemen yang muncul di salah satu set asli.

method union() menangani elemen duplikat secara otomatis untukmu. Jika elemen yang sama ada di kedua set, elemen itu hanya akan muncul sekali dalam set hasil union, sehingga mempertahankan sifat dasar set yang hanya berisi nilai unik.

Set<String> frontendSkills = {'HTML', 'CSS', 'JavaScript'};
Set<String> backendSkills = {'JavaScript', 'Python', 'SQL'};

Set<String> allSkills = frontendSkills.union(backendSkills);
print(allSkills);  // {HTML, CSS, JavaScript, Python, SQL}

Perhatikan bahwa 'JavaScript' muncul di kedua set awal, tetapi hanya sekali dalam hasil union. Ini membuat union() cocok untuk menggabungkan kumpulan yang saling berkaitan sekaligus memastikan tidak ada duplikat, misalnya menggabungkan set keahlian, menggabungkan izin pengguna, atau menyatukan data dari beberapa sumber.

Untuk menemukan elemen yang muncul di kedua set, gunakan method intersection(). Method ini mengembalikan set baru yang hanya berisi elemen yang sama:

Set<String> sharedSkills = frontendSkills.intersection(backendSkills);
print(sharedSkills);  // {JavaScript}

Setelah kamu memiliki set elemen yang saling tumpang tindih, kamu bisa mengubahnya menjadi string yang mudah dibaca menggunakan method join(). Cara kerjanya sama seperti pada List. Method ini menggabungkan semua elemen menjadi satu string dengan pemisah yang kamu berikan:

Set<String> overlap = frontendSkills.intersection(backendSkills);
String result = overlap.isEmpty ? 'None' : overlap.join(', ');
print(result);  // JavaScript

Bersama-sama, union(), intersection(), dan join() memberimu alat yang ampuh untuk membandingkan dan menampilkan data set, misalnya, menggabungkan kumpulan keahlian tim dan mengidentifikasi keahlian yang sudah mereka miliki bersama.

challenge icon

Tantangan

Mudah

Buat program yang mengelola sistem jejaring profesional dengan menggabungkan kumpulan keterampilan dari anggota tim yang berbeda untuk membuat profil keterampilan proyek yang menyeluruh. Programmu harus:

  1. Membaca input string yang mewakili nama proyek
  2. Membaca beberapa input string yang mewakili keterampilan anggota tim pertama (input akan berakhir saat kamu menerima "member1_done")
  3. Membaca beberapa input string yang mewakili keterampilan anggota tim kedua (input akan berakhir saat kamu menerima "member2_done")
  4. Membuat dua set terpisah untuk menyimpan keterampilan setiap anggota tim
  5. Menggunakan method union() untuk menggabungkan kedua kumpulan keterampilan menjadi profil keterampilan proyek yang menyeluruh
  6. Mencetak hasil penggabungan keterampilan dengan format persis seperti yang ditunjukkan di bawah

Misalnya, jika nama proyeknya adalah "Web Development Project", keterampilan anggota pertama adalah "HTML", "CSS", "JavaScript", "React", dan keterampilan anggota kedua adalah "JavaScript", "Node.js", "MongoDB", "React", programmu harus menampilkan:

Project: Web Development Project
Team Member 1 skills: {HTML, CSS, JavaScript, React}
Team Member 2 skills: {JavaScript, Node.js, MongoDB, React}
Combined project skills: {HTML, CSS, JavaScript, React, Node.js, MongoDB}
Total unique skills available: 6
Overlapping skills: JavaScript, React
Status: Project skill profile created successfully

Jika nama proyeknya adalah "Mobile App Development", keterampilan anggota pertama adalah "Dart", "Flutter", "Firebase", dan keterampilan anggota kedua adalah "Swift", "iOS", "Xcode", programmu harus menampilkan:

Project: Mobile App Development
Team Member 1 skills: {Dart, Flutter, Firebase}
Team Member 2 skills: {Swift, iOS, Xcode}
Combined project skills: {Dart, Flutter, Firebase, Swift, iOS, Xcode}
Total unique skills available: 6
Overlapping skills: None
Status: Project skill profile created successfully

Jika nama proyeknya adalah "Data Science Project", keterampilan anggota pertama adalah "Python", "Pandas", "NumPy", "SQL", dan keterampilan anggota kedua adalah "Python", "SQL", "Tableau", "Statistics", programmu harus menampilkan:

Project: Data Science Project
Team Member 1 skills: {Python, Pandas, NumPy, SQL}
Team Member 2 skills: {Python, SQL, Tableau, Statistics}
Combined project skills: {Python, Pandas, NumPy, SQL, Tableau, Statistics}
Total unique skills available: 6
Overlapping skills: Python, SQL
Status: Project skill profile created successfully

Programmu harus menggunakan method union() untuk menggabungkan kedua kumpulan keterampilan, sekaligus menunjukkan cara method ini menangani duplikat secara otomatis. Tampilkan set keterampilan masing-masing terlebih dahulu, lalu hasil gabungannya. Identifikasi keterampilan yang tumpang tindih dengan mencari keterampilan yang muncul di kedua set awal. Jika tidak ada keterampilan yang tumpang tindih, tampilkan "None" pada baris keterampilan yang tumpang tindih.

Coba sendiri

import 'dart:io';

void main() {
  // Baca nama proyek
  String? projectName = stdin.readLineSync();
  
  // Baca keahlian anggota tim pertama
  Set<String> member1Skills = <String>{};
  String? skill;
  while ((skill = stdin.readLineSync()) != "member1_done") {
    if (skill != null) {
      member1Skills.add(skill);
    }
  }
  
  // Baca keahlian anggota tim kedua
  Set<String> member2Skills = <String>{};
  while ((skill = stdin.readLineSync()) != "member2_done") {
    if (skill != null) {
      member2Skills.add(skill);
    }
  }
  
  // TODO: Tulis kodemu di bawah ini
  // Gunakan method union() untuk menggabungkan kedua set keahlian
  // Temukan keahlian yang sama di kedua set
  // Hitung jumlah keahlian unik
  
  // Tampilkan hasil dalam format yang diminta
  print("Project: $projectName");
  print("Team Member 1 skills: $member1Skills");
  print("Team Member 2 skills: $member2Skills");
  // Tampilkan keahlian gabungan, jumlah total, keahlian yang sama, dan status
}
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