I want to compute the cartesian product of an arbitrary number of nonempty sets in Java.
I\'ve wrote that iterative code...
public s
The following answer uses iteration and not recursion. It uses the same Tuple
class from my previous answer.
It is a separate answer because IMHO both are valid, different approaches.
Here is the new main class:
public class Example {
public static List> cartesianProduct(List> sets) {
List> tuples = new ArrayList>();
for (Set set : sets) {
if (tuples.isEmpty()) {
for (T t : set) {
Tuple tuple = new Tuple();
tuple.add(t);
tuples.add(tuple);
}
} else {
List> newTuples = new ArrayList>();
for (Tuple subTuple : tuples) {
for (T t : set) {
Tuple tuple = new Tuple();
tuple.addAll(subTuple);
tuple.add(t);
newTuples.add(tuple);
}
}
tuples = newTuples;
}
}
return tuples;
}
}