在网上查了很多笛卡儿积的乘积,感觉程序都写得比较复杂,当看到上面的文章的时候,感觉豁然开朗,通俗易懂,所以,在笔者的代码下,将代码整理了一下。
首先,需要理解的是,笛卡尔积:多个集合的乘积。
我们可以想到如果,是两个集合的乘积,如何做运算呢?就是将前一个集合复制(后一个集合的元素数量)份,得到一个新的集合,然后遍历集合,与后一个集合做连接。
知道了两个集合的相乘,我们来看看3个集合相称,我们可以先算前两个集合的乘积,算出来的新的集合,再与下一个集合相称,这样,我们每次做运算本质都是两个集合的乘积。话不多说,直接看代码:
import java.util.ArrayList;
/**
* @author
* @create 2018-04-04 19:21
**/
public class Test {
/**
* 计算 多个集合的笛卡尔积
* @param dimValues 存储多个集合的 二维list
* @return
*/
private static ArrayList descartes(ArrayList> dimValues) {
ArrayList result = new ArrayList();
for (int i = 0 ; i < dimValues.size() ; i++){
ArrayList