业务需求:现在有好多个维度List 机构:List<Dimension> deptList、渠道:List<Dimension> channelList、
产品:List<Dimension> productList、口径:List<Dimension> specList等维度。
Dimension 对象有code,name,type属性。
现在需要求所有维度的笛卡尔集的对象。
一般我们会想到嵌套for循环,但是for循环会有某一个集合为null的问题
现在我们写一个工具方法:
private static <T> List<List<T>> getDescartes(List<List<T>>){
List<List<T>> returnList = new Arraylist<>();
descartesRecursive(list,0,retrunList,new Arraylist<T>());
}
/**
*递归实现
*原理:从原始list的0开始遍历到最后
*originalList 原始list
*position 当前递归在原始list的位置
*returnList 返回结果
* cacheList 临时保存的list
*/
private static <T> void descartesRecu