Java: декартово произведение списка списков

У меня есть проблема, которая на самом деле является общим вопросом программирования, но моя реализация на Java, поэтому я приведу свои примеры таким образом

У меня есть такой класс:

public class Foo {
    LinkedHashMap<String, Vector<String>> dataStructure;

    public Foo(LinkedHashMap<String, Vector<String>> dataStructure){
        this.dataStructure = dataStructure;
    }

    public String[][] allUniqueCombinations(){
        //this is what I need to do
    }
}

Мне нужно создать вложенный массив из моегоLinkedHashMap это представляет каждую уникальную комбинацию всех значений в LHM. например, если мой LHM выглядит следующим образом (псевдокод, но я думаю, что вы можете понять идею ..):

{"foo" => ["1","2","3"], "bar" => ["3","2"], "baz" => ["5","6","7"]};

тогда моя строка [] [] должна выглядеть так:

{
   {"foo","bar","baz"},
   {"1","3","5"},
   {"1","2","5"},
   {"1","3","6"},
   {"1","2","6"},
   {"1","3","7"},
   {"1","2","7"},
   {"2","3","5"},
   {"2","2","5"},
   {"2","3","6"},
   {"2","2","6"},
   {"2","3","7"},
   {"2","2","7"},
   {"3","3","5"},
   {"3","2","5"},
   {"3","3","6"},
   {"3","2","6"},
   {"3","3","7"},
   {"3","2","7"},
}

Я думаю, что это все из них, я сделал это вручную (очевидно), поэтому я мог пропустить набор, но я думаю, что это иллюстрирует то, что я пытаюсь сделать. Не имеет значения, в каком порядке поступает каждый набор, если присутствуют все уникальные комбинации. Также, чтобы быть ясным, вы не знаете, сколько элементов в LHM, ни сколько элементов в каждом последующем векторе. Я нашел ответы, которые соответствуют случаю, когда вы хотите, чтобы каждая уникальная комбинация всех элементов в одном массиве, но ничего, что соответствует этому точно. Однако, если это точная копия вопроса, укажите в ответе ссылку, и я закрою вопрос.

Обновить - Я изменил свои типы на строки, потому что мой реальный пример - это строки. Я пытался использовать целые числа, чтобы сделать пример более читабельным, но ответы, которые я получил до сих пор, плохо переводятся в строки. Так что, да, это числа, но в моем случае это будут строки, которые не будут иметь большого смысла ни для кого, кроме людей, которые используют это конкретное приложение. так что это всего лишь абстракция.

Ответы на вопрос(10)

Ваш ответ на вопрос