Menu
Coddy logo textTech

Unione di insiemi

Fa parte della sezione Logica e flusso del percorso Dart di Coddy. Lezione 22 di 65.

Quando hai due collezioni Set separate, puoi combinarle in un unico insieme contenente tutti gli elementi unici di entrambe usando il metodo union(). Questa operazione crea un nuovo insieme che include ogni elemento presente in uno dei due insiemi originali.

Il metodo union() gestisce automaticamente i duplicati per te. Se lo stesso elemento è presente in entrambi gli insiemi, apparirà una sola volta nell'insieme risultante dall'unione, mantenendo la proprietà fondamentale per cui gli insiemi contengono solo valori univoci.

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}

Nota come 'JavaScript' compaia in entrambi gli insiemi originali ma una sola volta nel risultato dell'unione. Questo rende union() perfetto per combinare raccolte correlate assicurandosi che non ci siano duplicati, ad esempio unendo insiemi di competenze, combinando le autorizzazioni degli utenti o consolidando dati provenienti da più fonti.

Per trovare gli elementi che compaiono in entrambi gli insiemi, usa il metodo intersection(). Restituisce un nuovo insieme contenente solo gli elementi condivisi:

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

Una volta ottenuto un insieme di elementi sovrapposti, puoi convertirlo in una stringa leggibile usando il metodo join(). Funziona allo stesso modo che con una List. Unisce tutti gli elementi in un'unica stringa con un separatore che fornisci:

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

Insieme, union(), intersection() e join() ti offrono potenti strumenti per confrontare e visualizzare i dati degli insiemi, ad esempio combinando le competenze delle squadre e individuando quali competenze hanno già in comune.

challenge icon

Sfida

Facile

Crea un programma che gestisca un sistema di networking professionale combinando gli insiemi di competenze di diversi membri del team per creare un profilo completo delle competenze del progetto. Il tuo programma deve:

  1. Leggere una stringa in input che rappresenta il nome del progetto
  2. Leggere più stringhe in input che rappresentano le competenze del primo membro del team (l'input terminerà quando riceverai "member1_done")
  3. Leggere più stringhe in input che rappresentano le competenze del secondo membro del team (l'input terminerà quando riceverai "member2_done")
  4. Creare due insiemi separati per memorizzare le competenze di ciascun membro del team
  5. Usare il metodo union() per combinare entrambi gli insiemi di competenze in un profilo completo delle competenze del progetto
  6. Stampare i risultati della combinazione delle competenze nel formato esatto mostrato di seguito

Per esempio, se il nome del progetto è "Web Development Project", le competenze del primo membro sono "HTML", "CSS", "JavaScript", "React" e le competenze del secondo membro sono "JavaScript", "Node.js", "MongoDB", "React", il tuo programma dovrebbe produrre:

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

Se il nome del progetto è "Mobile App Development", le competenze del primo membro sono "Dart", "Flutter", "Firebase" e le competenze del secondo membro sono "Swift", "iOS", "Xcode", il tuo programma dovrebbe produrre:

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

Se il nome del progetto è "Data Science Project", le competenze del primo membro sono "Python", "Pandas", "NumPy", "SQL" e le competenze del secondo membro sono "Python", "SQL", "Tableau", "Statistics", il tuo programma dovrebbe produrre:

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

Il tuo programma deve usare il metodo union() per combinare i due insiemi di competenze, mostrando come gestisce automaticamente i duplicati. Mostra prima i singoli insiemi di competenze, poi il risultato combinato. Individua le eventuali competenze in comune trovando quelle presenti in entrambi gli insiemi originali. Se non ci sono competenze in comune, mostra "None" nella riga delle competenze in comune.

REQUIRED OUTPUT FORMAT: [Your translated content here]

Provalo tu

import 'dart:io';

void main() {
  // Leggi il nome del progetto
  String? projectName = stdin.readLineSync();
  
  // Leggi le competenze del primo membro del team
  Set<String> member1Skills = <String>{};
  String? skill;
  while ((skill = stdin.readLineSync()) != "member1_done") {
    if (skill != null) {
      member1Skills.add(skill);
    }
  }
  
  // Leggi le competenze del secondo membro del team
  Set<String> member2Skills = <String>{};
  while ((skill = stdin.readLineSync()) != "member2_done") {
    if (skill != null) {
      member2Skills.add(skill);
    }
  }
  
  // TODO: Scrivi il tuo codice qui sotto
  // Usa il metodo union() per unire i due insiemi di competenze
  // Trova le competenze in comune tra i due insiemi
  // Calcola il numero totale di competenze distinte
  
  // Mostra i risultati nel formato richiesto
  print("Project: $projectName");
  print("Team Member 1 skills: $member1Skills");
  print("Team Member 2 skills: $member2Skills");
  // Stampa le competenze combinate, il numero totale, le competenze in comune e lo stato
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore Dart online