Heim >Java >javaLernprogramm >Wie kann ich das kartesische Produkt mehrerer Mengen in Java effizient berechnen?
Effiziente kartesische Produktberechnung für mehrere Mengen
Das Ermitteln des kartesischen Produkts mehrerer Mengen kann eine nützliche Operation bei der Programmierung sein. Dabei wird ein neuer Satz generiert, der alle möglichen Kombinationen von Elementen aus den Eingabesätzen enthält. In Java gibt es einige Bibliotheken, die diese Aufgabe erleichtern können.
Rekursive Lösung für eine beliebige Anzahl von Mengen
Wenn jedoch die Anzahl der Mengen dynamisch variiert, a Eine rekursive Lösung kann implementiert werden:
public static Set<Set<Object>> cartesianProduct(Set<?>... sets) { if (sets.length < 2) throw new IllegalArgumentException("Product requires at least two sets (got " + sets.length + ")"); return _cartesianProduct(0, sets); } private static Set<Set<Object>> _cartesianProduct(int index, Set<?>... sets) { Set<Set<Object>> ret = new HashSet<>(); if (index == sets.length) { ret.add(new HashSet<>()); } else { for (Object obj : sets[index]) { for (Set<Object> set : _cartesianProduct(index + 1, sets)) { set.add(obj); ret.add(set); } } } return ret; }
Diese rekursive Funktion verwendet ein Array von Mengen als Eingabe und kombiniert Elemente iterativ aus jedem Satz, um das kartesische Produkt zu bilden. Beachten Sie, dass diese Lösung aufgrund der Einschränkungen von Java keine generischen Typinformationen beibehalten kann.
Das obige ist der detaillierte Inhalt vonWie kann ich das kartesische Produkt mehrerer Mengen in Java effizient berechnen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!