我有一個算法,通過從每列中取出一個項目(這裏是湯,麪條和澆頭的選擇)來返回所有可能的組合。Java查找列中所有可能的組合
有沒有一個更有效率和動態的方式來做到這一點?爲了使findAllCombinations方法起作用,我需要知道有多少列並對它們進行硬編碼。
有效組合: [西洋菜湯,烏冬面,魚立方],[辣湯,拉麪,火腿] ...
ArrayList<ArrayList<String>> listOfLists = Lists.newArrayList();
listOfLists.add(Lists.newArrayList("Original Soup", "Spicy Soup", "Watercress Soup", "Thai Spicy Soup", "Malaysia Spicy Soup"));
listOfLists.add(Lists.newArrayList("Udon", "Ramen", "Egg Noodle", "Flat Rice Noodle", "Vermicelli", "Instant Noodle"));
listOfLists.add(Lists.newArrayList("Fish Cube", "Fish Ball", "Ham", "Squid", "Seaweed"));
ArrayList<ArrayList<String>> combo = findAllCombinations(listOfLists);
private ArrayList<ArrayList<String>> findAllCombinations(ArrayList<ArrayList<String>> arrays){
ArrayList<ArrayList<String>> combinations = new ArrayList<>();
for(String item1: arrays.get(0)){
for(String item2: arrays.get(1)){
for(String item3: arrays.get(2)){
ArrayList<String> temp = new ArrayList<String>() {
{
add(item1);
add(item2);
add(item3);
}
};
combinations.add(temp);
}
}
}
return combinations;
}
爲什麼跳過第二個數組的第一個成員和第三個數組的前兩個成員? – LostAndConfused
@LostAndConfused你好像有點迷茫和困惑。 – shmosel
@LostAndConfused他不是,他正在選擇第一,第二和第三陣列 – TheBakker