这里介绍一种将多个数据元素拼成新的笛卡尔数据。
进行笛卡尔排序前的数据为:[a,b],[c],[d,e],在进行笛卡尔算法处理之后的数据为:[a,c,d],[a,c,e],[b,c,d],[b,c,e],一共四组结果。
实现基本思路:
- 依次遍历每一组数据,首先将已经生成的集合按照当前遍历数据的长度扩展相应倍数;
- 然后将当前遍历对象一次分配找已经生成的序列中;
- 如此直至遍历结束,便可实现笛卡尔效果。
1 | [a,b] |
按照上面的步骤就是一个很简单的笛卡尔算法的实现。
具体JAVA的实现过程中,需要注意以下几点:
- 集合的深度复制,不能用addAll(Collection);
具体的代码实现如下:
1 | package com.songwh.kalisee.utils; |
运行结果: