Java-每个键的动态映射循环
我有下面这样的地图 {“A”:[“A1”、“A2”、“A3”],“B”:[“B1”、“B2”、“B3”]} 我想得到如下数据Java-每个键的动态映射循环,java,Java,我有下面这样的地图 {“A”:[“A1”、“A2”、“A3”],“B”:[“B1”、“B2”、“B3”]} 我想得到如下数据 A1, B1 A1, B2 A1, B3 A2, B1 A2, B2 ... for( String aKey : map.get("A")) for( String bKey: map.get("B")) // work with aKey + bKey 我试着像下面一样 A1, B1 A1, B2 A1, B3 A2, B1 A2, B2
A1, B1
A1, B2
A1, B3
A2, B1
A2, B2
...
for( String aKey : map.get("A"))
for( String bKey: map.get("B"))
// work with aKey + bKey
我试着像下面一样
A1, B1
A1, B2
A1, B3
A2, B1
A2, B2
...
for( String aKey : map.get("A"))
for( String bKey: map.get("B"))
// work with aKey + bKey
但这不是我想要的代码,因为地图数据是动态的和不可预知的
所以我应该像下面这样获得地图数据,但不能按照我的要求制作
for( String key : map.keySet())
for( String values : map.get(key))
// unable to make data I want
您已经正确地理解了,不能使用一组静态嵌套循环创建任意数据的笛卡尔积。您需要的是一组嵌套循环的动态集合。我想您在最后一段代码中尝试过这一点。您似乎也明白,您需要的嵌套循环数量与数据中的集合数量相同。问题仍然是:如何编程动态数量的嵌套循环 基本上,有两种方法可以动态执行大量嵌套循环:递归和迭代。两者都能获得相同的结果,并且性能(在时间和内存方面)应该相似。如果实施得好,就是这样 这里有两个类似的问题,一个明确要求迭代解决方案:
递归方法还有一个额外的问题,因为递归可能更难理解:最后的代码片段应该可以正常工作。请提供和描述您面临的实际问题。我在您提供的示例输出中没有看到模式。最后一行(
B2,B2
)不应该是A2,B2
?@Fureeish这是打字错误。对不起,如果映射有两个以上的键怎么办?您知道Java Streams和Collector.toMap吗?这应该是可能的。