微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

映射中的Java值组合

如何解决映射中的Java值组合

我有这种类型的地图:const NewsItem = (props) => { // other code goes here return <div></div> } NewsItem.defaultProps = { items: [] }

地图包含以下数据:

class_uses_recursive()

我想获得这个:

Map<String,List<String>>

使用Java 8的最佳方法是什么?考虑每个键可能包含很多值。

这是我编写的代码

{
  A[a1,a2,a3]
  B[b1,b2]
  C[c1,c2]
}

解决方法

您可以尝试递归方式。对于地图的每个键,您都可以选择一个元素并添加列表,然后继续执行键的元素。然后收集在列表中。

  List<List<String>> getAllCom(int index,List<List<String>> list,List<String> curr){
    if(index >= list.size()) return Arrays.asList(curr);
    List<List<String>> res = new ArrayList<>(); 
    for (String e : list.get(index)) {
      List<String> now = new ArrayList<>(curr);
       now.add(e);
       res.addAll(getAllCom(index + 1,list,now));
    }
    return res;
  }

演示:

Map<String,List<String>> data = new HashMap<>();
data.put("A",Arrays.asList("a1","a2","a3"));
data.put("B",Arrays.asList("b1","b2"));
data.put("C",Arrays.asList("c1","c2"));

List<List<String>> list = new ArrayList<>(data.values());
System.out.println(getAllCom(0,Collections.emptyList()));

输出:

[[a1,b1,c1],[a1,c2],b2,[a2,[a3,c2]]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。