从Hashmap创建可能的组合

时间:2015-06-25 13:57:42

标签: java

我有一个像下面的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],

等等。

我们怎么能这样做?

1 个答案:

答案 0 :(得分:1)

使用番石榴Sets

List<Set<String>> values = map.values()
                              .stream()
                              .map(HashSet::new)  // to set
                              .collect(Collectors.toList());
Set<List<String>> = Sets.cartesianProduct(values);