在Java中,可以使用遞歸來實現多個List的排列組合。
以下是一個示例代碼,用于實現兩個List的排列組合:
import java.util.ArrayList;
import java.util.List;
public class Combination {
public static void main(String[] args) {
List<Integer> list1 = new ArrayList<>();
list1.add(1);
list1.add(2);
list1.add(3);
List<Integer> list2 = new ArrayList<>();
list2.add(4);
list2.add(5);
List<List<Integer>> result = combination(list1, list2);
for (List<Integer> combination : result) {
System.out.println(combination);
}
}
public static List<List<Integer>> combination(List<Integer> list1, List<Integer> list2) {
List<List<Integer>> result = new ArrayList<>();
if (list1.isEmpty()) {
result.add(new ArrayList<>(list2));
return result;
}
if (list2.isEmpty()) {
result.add(new ArrayList<>(list1));
return result;
}
int firstElement = list1.get(0);
List<Integer> restOfList1 = list1.subList(1, list1.size());
List<List<Integer>> combinationsWithoutFirstElement = combination(restOfList1, list2);
for (List<Integer> combination : combinationsWithoutFirstElement) {
List<Integer> newCombination = new ArrayList<>();
newCombination.add(firstElement);
newCombination.addAll(combination);
result.add(newCombination);
}
List<Integer> restOfList2 = list2.subList(1, list2.size());
List<List<Integer>> combinationsWithoutFirstElementInList2 = combination(list1, restOfList2);
result.addAll(combinationsWithoutFirstElementInList2);
return result;
}
}
在以上代碼中,我們首先定義了兩個List:list1和list2。然后,我們調用combination方法對這兩個List進行排列組合,并將結果保存在一個List<List
請注意,此代碼中的combination方法使用遞歸來實現排列組合。它首先檢查兩個列表中是否有一個為空,如果是,則將另一個列表的元素添加到結果列表中,并返回結果。否則,它取出列表中的第一個元素,將其與遞歸調用返回的每個排列組合進行組合,并將結果添加到結果列表中。
在實際應用中,您可以根據需要修改combination方法,以處理任意數量的列表。