Iterative Cartesian Product in Java

前端 未结 9 1874
既然无缘
既然无缘 2020-11-27 07:00

I want to compute the cartesian product of an arbitrary number of nonempty sets in Java.

I\'ve wrote that iterative code...

public s         


        
9条回答
  •  無奈伤痛
    2020-11-27 07:33

    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;
        }
    }
    

提交回复
热议问题