Senior
/* AUSWAHL links.K, links.V1, rechts.V2 VON links JOIN rechts AUF links.K = rechts.K; */ public <K extends Comparable<K>, V1, V2> List<Triple<K, V1, V2>> join(List<Pair<K, V1>> links, List<Pair<K, V2>> rechts) { return null; } private static class Pair<A, B> { private A erster; private B zweiter; Pair(A erster, B zweiter) { this.erster = erster; this.zweiter = zweiter; } } private static class Triple<A, B, C> { private A erster; private B zweiter; private C dritter; Triple(A erster, B zweiter, C dritter) { this.erster = erster; this.zweiter = zweiter; this.dritter = dritter; } }
sobes.tech KI
Antwort von AI
Nachfolgend wird eine Implementierung der Funktion join gezeigt, die eine innere Verbindung (inner join) zweier Listen von Paaren nach dem Schlüssel K durchführt. Für Effizienz wird eine Map verwendet, um die entsprechenden Elemente aus der zweiten Liste schnell zu suchen.
public <K extends Comparable<K>, V1, V2> List<Triple<K, V1, V2>> join(List<Pair<K, V1>> left, List<Pair<K, V2>> right) {
Map<K, V2> rightMap = new HashMap<>();
for (Pair<K, V2> pair : right) {
rightMap.put(pair.first, pair.second);
}
List<Triple<K, V1, V2>> result = new ArrayList<>();
for (Pair<K, V1> pairLeft : left) {
V2 v2 = rightMap.get(pairLeft.first);
if (v2 != null) {
result.add(new Triple<>(pairLeft.first, pairLeft.second, v2));
}
}
return result;
}
Hier:
- Es wird ein Wörterbuch aus der rechten Liste für eine schnelle Suche nach Schlüssel erstellt.
- Die linke Liste wird durchlaufen, für jeden Schlüssel wird der entsprechende Wert im Wörterbuch gesucht.
- Wenn gefunden, wird ein Triple erstellt und zum Ergebnis hinzugefügt.
Dies entspricht einer SQL-Abfrage mit JOIN nach dem Schlüssel K.