Küme Birleşimi
Coddy'nin Dart Journey'sinin Mantık & Akış bölümünün bir parçası — ders 22 / 65.
İki ayrı Set koleksiyonuna sahip olduğunuzda, union() yöntemini kullanarak bunları her ikisinden de tüm benzersiz öğeleri içeren tek bir kümede birleştirebilirsiniz. Bu işlem, orijinal kümelerin herhangi birinde görünen her öğeyi içeren yeni bir küme oluşturur.
union() metodu, kopyaları sizin için otomatik olarak işler. Aynı öğe her iki kümede de mevcutsa, sonuçtaki birleşim kümesinde yalnızca bir kez görünür ve kümelerin yalnızca benzersiz değerler içerdiği temel özelliğini korur.
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}'JavaScript'in her iki orijinal kümede de göründüğüne, ancak birleşim sonucunda yalnızca bir kez yer aldığına dikkat edin. Bu, union() metodunu; beceri setlerini birleştirmek, kullanıcı izinlerini bir araya getirmek veya birden fazla kaynaktan gelen verileri konsolide etmek gibi, yinelenenlerin olmamasını sağlayarak ilgili koleksiyonları birleştirmek için mükemmel kılar.
intersection() metodunu kullanarak iki kümenin paylaştığı öğeleri de bulabilirsiniz. Bu metot, her iki kümede de bulunan öğeleri içeren yeni bir küme döndürür.
Set<String> frontendSkills = {'HTML', 'CSS', 'JavaScript'};
Set<String> backendSkills = {'JavaScript', 'Python', 'SQL'};
Set<String> sharedSkills = frontendSkills.intersection(backendSkills);
print(sharedSkills); // {JavaScript}Bir kümenin öğelerini tek bir okunabilir dize olarak görüntülemek için join() yöntemini kullanın. Her bir öğe arasına yerleştirmek için bir ayırıcı dize geçirebilirsiniz.
Set<String> sharedSkills = {'JavaScript'};
print(sharedSkills.join(', ')); // JavaScript
Set<String> allSkills = {'HTML', 'CSS', 'JavaScript', 'Python', 'SQL'};
print(allSkills.join(', ')); // HTML, CSS, JavaScript, Python, SQLGörev
KolayFarklı ekip üyelerinin beceri setlerini birleştirerek kapsamlı bir proje beceri profili oluşturan ve profesyonel bir ağ sistemini yöneten bir program oluşturun. Programınız şunları yapmalıdır:
- Proje adını temsil eden bir dize (string) girdisi okuyun
- Birinci ekip üyesinin becerilerini temsil eden birden fazla dize girdisi okuyun (girdi
"member1_done"değerini aldığınızda sona erecektir) - İkinci ekip üyesinin becerilerini temsil eden birden fazla dize girdisi okuyun (girdi
"member2_done"değerini aldığınızda sona erecektir) - Her bir ekip üyesinin becerilerini saklamak için iki ayrı Set oluşturun
- Her iki beceri setini kapsamlı bir proje beceri profilinde birleştirmek için
union()metodunu kullanın - Beceri birleştirme sonuçlarını aşağıda gösterilen tam formatta yazdırın
Örneğin, proje adı "Web Development Project" ise, birinci üyenin becerileri "HTML", "CSS", "JavaScript", "React" ve ikinci üyenin becerileri "JavaScript", "Node.js", "MongoDB", "React" ise programınız şu çıktıyı vermelidir:
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 successfullyEğer proje adı "Mobile App Development" ise, birinci üyenin becerileri "Dart", "Flutter", "Firebase" ve ikinci üyenin becerileri "Swift", "iOS", "Xcode" ise programınız şu çıktıyı vermelidir:
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 successfullyEğer proje adı "Data Science Project" ise, birinci üyenin becerileri "Python", "Pandas", "NumPy", "SQL" ve ikinci üyenin becerileri "Python", "SQL", "Tableau", "Statistics" ise programınız şu çıktıyı vermelidir:
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 successfullyProgramınız, kopyaları otomatik olarak nasıl işlediğini göstermek için iki beceri setini birleştirmek üzere union() metodunu kullanmalıdır. Önce bireysel beceri setlerini, ardından birleştirilmiş sonucu gösterin. Her iki orijinal sette de bulunan becerileri bularak çakışan becerileri belirleyin. Çakışan beceri yoksa, çakışan beceriler satırı için "None" yazdırın.
Kopya kağıdı
union() metodu, iki kümeyi her iki kümedeki tüm benzersiz öğeleri içeren tek bir kümede birleştirir:
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}union() metodu kopyaları otomatik olarak işler - eğer aynı öğe her iki kümede de varsa, sonuç kümesinde yalnızca bir kez görünür.
intersection() metodu, yalnızca her iki kümede de bulunan öğeleri içeren yeni bir küme döndürür:
Set<String> commonSkills = frontendSkills.intersection(backendSkills);
print(commonSkills); // {JavaScript}join() metodu, tüm öğeleri isteğe bağlı bir ayırıcı ile birleştirerek bir kümeyi String'e dönüştürür:
print(allSkills.join(', ')); // HTML, CSS, JavaScript, Python, SQLKendin dene
import 'dart:io';
void main() {
// Proje adını oku
String? projectName = stdin.readLineSync();
// İlk ekip üyesinin yeteneklerini oku
Set<String> member1Skills = <String>{};
String? skill;
while ((skill = stdin.readLineSync()) != "member1_done") {
if (skill != null) {
member1Skills.add(skill);
}
}
// İkinci ekip üyesinin yeteneklerini oku
Set<String> member2Skills = <String>{};
while ((skill = stdin.readLineSync()) != "member2_done") {
if (skill != null) {
member2Skills.add(skill);
}
}
// TODO: Kodunuzu aşağıya yazın
// Her iki yetenek setini birleştirmek için union() metodunu kullanın
// İki set arasındaki çakışan yetenekleri bulun
// Toplam benzersiz yetenek sayısını hesaplayın
// Sonuçları istenen formatta yazdırın
print("Project: $projectName");
print("Team Member 1 skills: $member1Skills");
print("Team Member 2 skills: $member2Skills");
// Birleştirilmiş yetenekleri, toplam sayıyı, çakışan yetenekleri ve durumu yazdırın
}Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Mantık & Akış bölümündeki tüm dersler
1İleri Düzey Liste İşlemleri
Liste Özellikleri: first & lastListe Durumu: isEmpty & isNotEmptyBir Listeyi Tersine ÇevirmeListeye Ekleme: insertListeden Silme: removeWhereListede Bulma: indexOfBir Listeyi SıralamaBir Listeyi KarıştırmaÖzet - Liste Düzenleyici4İleri Seviye Map İşlemleri
Map Üzerinde GezinmeAnahtar ve Değer KontrolüMap Özellikleri: keys & valuesKoşullu Ekleme: putIfAbsentMap'ten Öge Kaldırmaİç İçe Map'lerÖzet - Envanter Güncelleme7İleri Seviye Fonksiyonlar
Anonim FonksiyonlarFonksiyonları Argüman Olarak AktarmaClosure'ları AnlamakÖzyinelemeye GirişÖzyinelemeli Fonksiyon: Geri SayımÖzyinelemeli Fonksiyon: FaktöriyelÖzet - Liste İşleyici10Son Meydan Okumalar
Meydan Okuma: Not SıralayıcıMeydan Okuma: Sesli Harf SayacıMeydan Okuma: FizzBuzz2Fonksiyonel Liste İşlemleri
'map' ile Dönüştürme'where' ile Filtreleme'.toList()' Kullanımı'any' ile Koşul Kontrolü'every' ile Koşullar'firstWhere' ile BulmaÖzet - Veri Filtreleme5Proje: Alışveriş Sepeti Hesaplayıcı
Proje KurulumuSepete Ürün Ekleme3Kümeler
Küme Nedir?Küme OluşturmaKümelere Eleman Ekleme ve ÇıkarmaKüme İçinde Eleman KontrolüListeyi Kümeye DönüştürmeKüme BirleşimiKüme KesişimiKüme FarkıÖzet - Benzersiz Davetli Listesi