2 つ以上の集合のデカルト積を求めることは、プログラミングにおける一般的なタスクです。 Java ライブラリを使用してこの操作を実行する方法は次のとおりです。
再帰的アプローチ
任意の数のセットに対して、再帰的アプローチを使用できます。 cartesianProduct メソッドは、セットの配列を引数として受け入れます。セットの数が有効かどうかを確認し、次の手順に進みます。
サンプル コード:
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; }
注: このアプローチでは、任意の数のセットのデカルト積ですが、Java の制限によりジェネリック型情報を保持できません。
以上がJavaで複数のセットのデカルト積を計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。