Heim > Java > javaLernprogramm > Wie kann man das kartesische Produkt mehrerer Mengen in Java effizient berechnen?

Wie kann man das kartesische Produkt mehrerer Mengen in Java effizient berechnen?

Linda Hamilton
Freigeben: 2024-12-06 07:27:10
Original
542 Leute haben es durchsucht

How to Efficiently Compute the Cartesian Product of Multiple Sets in Java?

Berechnung des kartesischen Produkts mehrerer Mengen in Java

In Java ist die Berechnung des kartesischen Produkts von zwei oder mehr Mengen eine übliche Operation. Dabei wird ein neuer Satz generiert, der alle möglichen Kombinationen von Elementen aus den Eingabesätzen enthält.

Eine rekursive Lösung

Herkömmliche Ansätze mit verschachtelten Schleifen können beim Umgang mit einer beliebigen Anzahl von Sätzen umständlich werden. Ziehen Sie stattdessen einen rekursiven Ansatz in Betracht:

public static Set<Set<Object>> cartesianProduct(Set<?>... sets) {
    if (sets.length < 2)
        throw new IllegalArgumentException("Can't have a product of fewer than 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;
}
Nach dem Login kopieren

Überlegungen

Beachten Sie, dass diese rekursive Implementierung aufgrund von Einschränkungen im generischen Parametersystem von Java generische Typinformationen verliert. Um Typinformationen beizubehalten, sollten Sie erwägen, eine bestimmte Tupelklasse für die Anzahl der beteiligten Mengen zu definieren, z. B. Triple für drei Sätze. Dieser Ansatz ist jedoch für eine beliebige Anzahl von Mengen unpraktisch.

Das obige ist der detaillierte Inhalt vonWie kann man das kartesische Produkt mehrerer Mengen in Java effizient berechnen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage