Нахождение произведения переменного числа строковых массивов в Java - PullRequest
2 голосов
/ 18 сентября 2010

Существует ли Java-эквивалент метода продукта Ruby Array # или способ сделать это:

groups = [
  %w[hello goodbye],
  %w[world everyone],
  %w[here there]
]

combinations = groups.first.product(*groups.drop(1))

p combinations
# [
#   ["hello", "world", "here"],
#   ["hello", "world", "there"],
#   ["hello", "everyone", "here"],
#   ["hello", "everyone", "there"],
#   ["goodbye", "world", "here"],
#   ["goodbye", "world", "there"],
#   ["goodbye", "everyone", "here"],
#   etc.

Этот вопрос является Java-версией этого: Нахождение произведения переменного числа массивов Ruby

1 Ответ

1 голос
/ 19 сентября 2010

Вот решение, которое использует рекурсию. Не уверен, какой вывод вы получили, поэтому я просто распечатал продукт. Вам также следует проверить этот вопрос.

public void printArrayProduct() {
    String[][] groups = new String[][]{
                                   {"Hello", "Goodbye"},
                                   {"World", "Everyone"},
                                   {"Here", "There"}
                        };
    subProduct("", groups, 0);
}

private void subProduct(String partProduct, String[][] groups, int down) {
    for (int across=0; across < groups[down].length; across++)
    {
        if (down==groups.length-1)  //bottom of the array list
        {
            System.out.println(partProduct + " " + groups[down][across]);
        }
        else
        {
            subProduct(partProduct + " " + groups[down][across], groups, down + 1);
        }
    }
}
...