Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.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_Collections - Fatal编程技术网

Java 遍历列表映射的映射

Java 遍历列表映射的映射,java,collections,Java,Collections,我有这样的map Map<String, Map<String, List<String>>> m; Map-m; 我想反复浏览一下这个列表 我的逻辑是这样的: 首先我拿到了第一张地图的钥匙 然后拿到第二张地图的钥匙 从这个键开始,我迭代列表 for(映射m:m.keyset()){ 对于(映射m1:m.getKey(){ 列表l=m1.getKey(){ for(字符串s:l){ } } } 这是正确的吗 我对测试它感到困惑…请帮帮我…:)你几乎已经

我有这样的
map

Map<String, Map<String, List<String>>> m;
Map-m;
我想反复浏览一下这个列表

我的逻辑是这样的:

  • 首先我拿到了第一张地图的钥匙
  • 然后拿到第二张地图的钥匙
  • 从这个键开始,我迭代列表

  • for(映射m:m.keyset()){
    对于(映射m1:m.getKey(){
    列表l=m1.getKey(){
    for(字符串s:l){
    }
    }
    }
    
    这是正确的吗


    我对测试它感到困惑…请帮帮我…:)

    你几乎已经拥有了它,这是你想要的

    Map<String,Map<String,List<String>>> m = new HashMap<String, Map<String,List<String>>>();
    
    for(String k : m.keySet()) {
        Map<String,List<String>> m1 = m.get(k);
    
        for(String k1 : m1.keySet()) {
            List<String> l = m1.get(k1);
    
            for (String s : l){
            }
        }
    }
    
    Map m=newhashmap();
    对于(字符串k:m.keySet()){
    Map m1=m.get(k);
    对于(字符串k1:m1.keySet()){
    列表l=m1.get(k1);
    for(字符串s:l){
    }
    }
    }
    
    只需遍历值即可

        Map<String,Map<String,List<String>>> m = new HashMap<String, Map<String,List<String>>>();
    
        for(Map<String,List<String>> m2 : m.values()) {
            for(List<String> l : m2.values()) {
                for (String s : l){
                }
            }
        }
    
    Map m=newhashmap();
    对于(映射m2:m.values()){
    对于(列表l:m2.values()){
    for(字符串s:l){
    }
    }
    }
    
    我对测试它感到困惑
    什么?也不要忽略泛型我的逻辑正确吗???你试过了吗?这是判断它是否正确的最快最简单的方法。用容器中的容器复制容器中的容器你可能应该学会如何编写类。你的代码是一个无法维护的痛苦。为什么我们要使用字符串Kre是增强for循环中的三个部分。第三部分是正在迭代的集合。中间部分是表示迭代中当前值/对象的局部变量。第一部分是集合中对象的类型。在您的例子中,m.keySet()返回一组字符串。因此字符串将是第一部分中必须使用的类型。如果您的问题是为什么for(字符串k:m.keySet())正确而不是for(映射m:m.keySet())-ya?您需要了解增强for循环的一般结构,例如:for(第一部分第二部分:第三部分)。
        Map<String,Map<String,List<String>>> m = new HashMap<String, Map<String,List<String>>>();
    
        for(Map<String,List<String>> m2 : m.values()) {
            for(List<String> l : m2.values()) {
                for (String s : l){
                }
            }
        }
    
    Map<String, Map<String, List<String>>> m = new HashMap<>();
    
    for (Map.Entry<String, Map<String,List<String>> entry : m.entrySet()) {
        for (Map.Entry<String, List<String>> innerEntry : entry.entrySet()) {
            for (String elem : innerEntry) {
                ...
            }
        }
    }
    
    m.forEach((s, entry) -> entry.forEach(
            (s1, innerEntry) -> innerEntry.forEach(
                    elem -> { ... }
            )
    ));