Menu
Coddy logo textTech

Set-Schnittmenge

Teil des Abschnitts Logik & Ablauf der Dart-Journey von Coddy — Lektion 23 von 65.

Wenn Sie Elemente finden müssen, die in beiden von zwei Set-Sammlungen vorhanden sind, bietet die intersection()-Methode die perfekte Lösung. Diese Operation identifiziert die gemeinsamen Elemente zwischen zwei Sets und erstellt ein neues Set, das nur die Elemente enthält, die in beiden ursprünglichen Sammlungen vorkommen.

Die Methode intersection() vergleicht die Elemente zweier Sets und gibt ein neues Set zurück, das nur die gemeinsamen Werte enthält. Wie andere Set-Operationen behandelt sie die Eindeutigkeit automatisch, sodass jedes gemeinsame Element nur einmal im Ergebnis erscheint.

Set<String> aliceFriends = {'Bob', 'Charlie', 'Diana', 'Eve'};
Set<String> bobFriends = {'Alice', 'Charlie', 'Frank', 'Diana'};

Set<String> mutualFriends = aliceFriends.intersection(bobFriends);
print(mutualFriends);  // {Charlie, Diana}

Diese Operation ist besonders nützlich, um Überschneidungen in Daten zu finden, wie zum Beispiel gemeinsame Interessen zwischen Benutzern, geteilte Fähigkeiten in Teams oder übereinstimmende Kriterien in Filteroperationen. Die Schnittmenge hilft Ihnen zu identifizieren, was zwei Sammlungen gemeinsam haben, was sie für Vergleichs- und Analyseaufgaben wertvoll macht.

challenge icon

Aufgabe

Einfach

Erstellen Sie ein Programm, das eine Social-Media-Plattform verwaltet, indem es gemeinsame Verbindungen zwischen zwei Benutzern findet. Ihr Programm sollte:

  1. Eine String-Eingabe lesen, die den Namen des ersten Benutzers darstellt
  2. Mehrere String-Eingaben lesen, die die Verbindungen des ersten Benutzers darstellen (die Eingabe endet, wenn Sie "user1_done" erhalten)
  3. Eine String-Eingabe lesen, die den Namen des zweiten Benutzers darstellt
  4. Mehrere String-Eingaben lesen, die die Verbindungen des zweiten Benutzers darstellen (die Eingabe endet, wenn Sie "user2_done" erhalten)
  5. Zwei separate Sets erstellen, um die Verbindungen jedes Benutzers zu speichern
  6. Die Methode intersection() verwenden, um gemeinsame Verbindungen zwischen beiden Benutzern zu finden
  7. Die Ergebnisse der Verbindungsanalyse im unten gezeigten exakten Format ausgeben

Wenn zum Beispiel der erste Benutzer "Alice" mit den Verbindungen "Bob", "Charlie", "Diana", "Eve" ist und der zweite Benutzer "Bob" mit den Verbindungen "Alice", "Charlie", "Frank", "Diana" ist, sollte Ihr Programm Folgendes ausgeben:

User Analysis: Finding mutual connections
Alice's connections: {Bob, Charlie, Diana, Eve}
Bob's connections: {Alice, Charlie, Frank, Diana}
Mutual connections: {Charlie, Diana}
Total mutual connections: 2
Connection strength: Strong (2+ mutual connections)
Status: Users have mutual connections

Wenn der erste Benutzer "Sarah" mit den Verbindungen "John", "Mike", "Lisa" ist und der zweite Benutzer "Tom" mit den Verbindungen "Emma", "David", "Kate" ist, sollte Ihr Programm Folgendes ausgeben:

User Analysis: Finding mutual connections
Sarah's connections: {John, Mike, Lisa}
Tom's connections: {Emma, David, Kate}
Mutual connections: {}
Total mutual connections: 0
Connection strength: None (no mutual connections)
Status: Users have no mutual connections

Wenn der erste Benutzer "Emma" mit den Verbindungen "Alex", "Jordan", "Taylor", "Morgan" ist und der zweite Benutzer "Jordan" mit den Verbindungen "Emma", "Taylor", "Casey" ist, sollte Ihr Programm Folgendes ausgeben:

User Analysis: Finding mutual connections
Emma's connections: {Alex, Jordan, Taylor, Morgan}
Jordan's connections: {Emma, Taylor, Casey}
Mutual connections: {Taylor}
Total mutual connections: 1
Connection strength: Weak (1 mutual connection)
Status: Users have mutual connections

Ihr Programm muss die Methode intersection() verwenden, um gemeinsame Verbindungen zwischen den beiden Benutzer-Sets zu finden. Bestimmen Sie die Verbindungsstärke basierend auf der Anzahl der gemeinsamen Verbindungen: "None" für 0 gemeinsame Verbindungen, "Weak" für genau 1 gemeinsame Verbindung und "Strong" für 2 oder mehr gemeinsame Verbindungen. Wenn gemeinsame Verbindungen bestehen, zeigen Sie "Users have mutual connections" als Status an, andernfalls zeigen Sie "Users have no mutual connections".

Spickzettel

Die Methode intersection() findet gemeinsame Elemente zwischen zwei Sets und gibt ein neues Set zurück, das nur die geteilten Werte enthält:

Set<String> aliceFriends = {'Bob', 'Charlie', 'Diana', 'Eve'};
Set<String> bobFriends = {'Alice', 'Charlie', 'Frank', 'Diana'};

Set<String> mutualFriends = aliceFriends.intersection(bobFriends);
print(mutualFriends);  // {Charlie, Diana}

Diese Operation berücksichtigt automatisch die Eindeutigkeit und ist nützlich, um Überschneidungen in Daten zu finden, wie zum Beispiel gemeinsame Interessen, geteilte Fähigkeiten oder Übereinstimmungskriterien in Filteroperationen.

Probier es selbst

import 'dart:io';

void main() {
  // Namen des ersten Benutzers lesen
  String? user1Name = stdin.readLineSync();
  
  // Verbindungen des ersten Benutzers lesen bis "user1_done"
  Set<String> user1Connections = <String>{};
  String? connection;
  while ((connection = stdin.readLineSync()) != "user1_done") {
    if (connection != null) {
      user1Connections.add(connection);
    }
  }
  
  // Namen des zweiten Benutzers lesen
  String? user2Name = stdin.readLineSync();
  
  // Verbindungen des zweiten Benutzers lesen bis "user2_done"
  Set<String> user2Connections = <String>{};
  while ((connection = stdin.readLineSync()) != "user2_done") {
    if (connection != null) {
      user2Connections.add(connection);
    }
  }
  
  // TODO: Schreiben Sie Ihren Code unten
  // Gemeinsame Verbindungen mit der Methode intersection() finden
  // Verbindungsstärke basierend auf der Anzahl der gemeinsamen Verbindungen bestimmen
  // Das erforderliche Ausgabeformat generieren
  
  // Die Analyseergebnisse ausgeben
  print("User Analysis: Finding mutual connections");
  // Fügen Sie hier Ihre Ausgabeanweisungen hinzu
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Ablauf