各列から1つの項目(ここではスープ、麺、トッピングのいずれかを選択)を取って、すべての組み合わせを返すアルゴリズムがあります。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;
}
2番目の配列の最初のメンバーと3番目の配列の最初の2メンバーをスキップするのはなぜですか? – LostAndConfused
@LostAndConfusedあなたは少し失われて混乱しているようです。 – shmosel
@LostAndConfused彼はいません、彼は第1、第2、第3の配列 – TheBakker