2015-06-25 2 views
0

У меня есть HashMap, как показано нижеСоздание возможных комбинаций из Hashmap

{ HHsize=[HHSize4+, HHSize1, HHSize2, HHSize3], 
    AOB=[AOB<30, AOB30_50, AOB60Plus, AOB50_60], 
    Asp=[Asp=N, Asp=Y]} 

мне нужно сгенерировать все возможные комбинации пар значений. Как декартово произведение Например.

[[HHSize4+,AOB<30,Asp=N], 
    [HHSize4+,AOB<30,Asp=Y], 
    [HHSize4+,AOB30_50,Asp=N], 
    [HHSize4+,AOB30_50,Asp=Y], 

и так далее.

Как мы можем это сделать?

+0

Если у Вас всегда есть ровно 3 элементов в карте, вы можете просто иметь 3 вложенный для петель, итерация значений каждого ключа. –

+0

использовать для цикла, который выполняет итерации по всем элементам первого массива, затем вложенный цикл, который выполняет итерацию по всем элементам во втором массиве ... и т. Д. ... и создает n-кортеж во время итерации. –

+0

У меня может быть более 3 предметов, которые являются проблемой. Я не знаю, сколько предметов я получу. – Santhiya

ответ

1

Использования Guava Sets:

List<Set<String>> values = map.values() 
           .stream() 
           .map(HashSet::new) // to set 
           .collect(Collectors.toList()); 
Set<List<String>> = Sets.cartesianProduct(values); 
Смежные вопросы