/**
* 卡迪尔积方法
* @param dimensionValue 原List
* @param result 通过乘积转化后的数组
* @param layer 中间参数
* @param currentList 中间参数
*/
private void descartes(List<List<Object>> dimensionValue, List<List<Object>> result, int layer, List<Object> currentList) {
if (layer < dimensionValue.size() - 1) {
if (dimensionValue.get(layer).size() == 0) {
descartes(dimensionValue, result, layer + 1, currentList);
} else {
for (int i = 0; i < dimensionValue.get(layer).size(); i++) {
List<Object> list = new ArrayList<>(currentList);
list.add(dimensionValue.get(layer).get(i));
descartes(dimensionValue, result, layer + 1, list);
}
}
} else if (layer == dimensionValue.size() - 1) {
if (dimensionValue.get(layer).size() == 0) {
result.add(currentList);
} else {
for (int i = 0; i < dimensionValue.get(layer).size(); i++) {
List<Object> list = new ArrayList<>(currentList);
list.add(dimensionValue.get(layer).get(i));
result.add(list);
}
}
}
}
java-卡迪尔积
于 2023-02-10 10:33:19 首次发布