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); // JavaScriptBersama-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.
Tantangan
MudahBuat program yang mengelola sistem jejaring profesional dengan menggabungkan kumpulan keterampilan dari anggota tim yang berbeda untuk membuat profil keterampilan proyek yang menyeluruh. Programmu harus:
- Membaca input string yang mewakili nama proyek
- Membaca beberapa input string yang mewakili keterampilan anggota tim pertama (input akan berakhir saat kamu menerima
"member1_done") - Membaca beberapa input string yang mewakili keterampilan anggota tim kedua (input akan berakhir saat kamu menerima
"member2_done") - Membuat dua set terpisah untuk menyimpan keterampilan setiap anggota tim
- Menggunakan method
union()untuk menggabungkan kedua kumpulan keterampilan menjadi profil keterampilan proyek yang menyeluruh - 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 successfullyJika 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 successfullyJika 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 successfullyProgrammu 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
}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