Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-每个键的动态映射循环_Java - Fatal编程技术网

Java-每个键的动态映射循环

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

我有下面这样的地图

{“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
...
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吗?这应该是可能的。