У меня есть алгоритм, который возвращает все возможные комбинации, беря по одному пункту из каждого столбца (здесь выбор супа, лапши и начинки).Java Найти все возможные комбинации из столбцов
Есть ли более эффективный и динамичный способ сделать это? Для того, чтобы метод findAllCombinations работал, мне нужно знать, сколько столбцов есть и их жесткий код.
Допустимые комбинации: [кресс суп, удон, Fish Cube], [Пряный суп, Ramen, Ham], ...
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 члена третьего массива? – LostAndConfused
@LostAndConfused вы немного потерялись и смущены. – shmosel
@LostAndConfused он не, он выбирает первый, второй и третий массив – TheBakker