如何解决映射中的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 举报,一经查实,本站将立刻删除。