Java Получение всех возможных комбинаций только от одного элемента на ключ - PullRequest
0 голосов
/ 21 ноября 2018

Я пытаюсь получить все возможности от Map<String,List<String>>.Я хочу получить только один элемент на ключ, например:

 Map<String, List<String>> map = new HashMap<>();
    map.put("first", asList("first1", "first2", "first3"));
    map.put("second", asList("second1", "second2", "second3"));
    map.put("anyOther", asList("anyType1", "anyType2", "anyType3"));

Я хочу получить один элемент на ключ и получить все возможные значения от других ключей, например:

first1;second1;anytype1
first1;second2;anytype2
first1;second3;anytype3
first1;second1;anytype1
first1;second2;anytype3
first1;second3;anytype2
.....

Ребята, ребята?Есть идеи Как мне это сделать?Я могу изменить свою структуру данных, возможно, использовать POJO или что-то в этом роде.

1 Ответ

0 голосов
/ 21 ноября 2018

Вы хотите Lists#cartesianProduct(List<List>):

final List<List<String>> product = 
    Lists.cartesianProduct(ImmutableList.copyOf(map.values()));
System.out.println(product);
// prints: [[anyType1, first1, second1], [anyType1, first1, second2], [anyType1, first1, second3], [anyType1, first2, second1], [anyType1, first2, second2], [anyType1, first2, second3], [anyType1, first3, second1], [anyType1, first3, second2], [anyType1, first3, second3], [anyType2, first1, second1], [anyType2, first1, second2], [anyType2, first1, second3], [anyType2, first2, second1], [anyType2, first2, second2], [anyType2, first2, second3], [anyType2, first3, second1], [anyType2, first3, second2], [anyType2, first3, second3], [anyType3, first1, second1], [anyType3, first1, second2], [anyType3, first1, second3], [anyType3, first2, second1], [anyType3, first2, second2], [anyType3, first2, second3], [anyType3, first3, second1], [anyType3, first3, second2], [anyType3, first3, second3]]
...