【问题标题】:Looping through a List<Map<Integer, Map<Long, Integer>>> in Java在 Java 中循环遍历 List<Map<Integer, Map<Long, Integer>>>
【发布时间】:2015-10-03 09:20:37
【问题描述】:

正如我的标题所暗示的,我正在努力循环遍历给定的数据结构。

我有一个 Map 列表,其中包含一个 Integer 键和一个包含 Long 和 Integer 的 Map 值。

如何循环遍历列表,然后映射,然后映射才能访问所有必填字段?

谢谢。

编辑: 作为对 cme​​ts 的响应,循环遍历列表我很好。 所以第一步是遍历列表,所以我只剩下:

for (Map<Integer, Map<Long, Integer>> periodScores : request.getPeriodScoreMap()) {
...
}

里面的东西让我很困惑。

目前我有:

for (Map<Integer, Map<Long, Integer>> periodScores : request.getPeriodScoreMap()) {
        while (periodScores.entrySet().iterator().hasNext()) {
            Map<Integer, Map<Long, Integer>> opponentScores =
                    (Map<Integer, Map<Long, Integer>>) periodScores.entrySet().iterator().next();
        }
    }

我正在努力进入最终的地图

【问题讨论】:

  • 你知道如何迭代List的元素吗?你知道如何迭代 MapentrySet 吗?
  • 到目前为止您尝试过什么?给我们看一些代码,我们也许可以解释你不明白的地方。
  • 这里提示:你需要三个循环
  • 你用的是什么java版本?

标签: java list loops data-structures hashmap


【解决方案1】:

如果地图列表是:List>> list; 然后你可以访问最里面的map中的每个Integer,如下所示:

 for(Map<Integer,Map<Long,Integer>> outerMap : list){
        for(Integer innerMapKeys : outerMap.keySet()){
            Map<Long,Integer> innerMap = outerMap.get(innerMapKeys);
            for(Long key:innerMap.keySet()){
                System.out.println(innerMap.get(key)); 
            }
        }
    }

【讨论】:

  • _@user403348255 下次在答案框中使用{ } 格式化代码并为你+1:D
  • 我是堆栈溢出的新手;谢谢你的信息,下次会记住这个指针。
【解决方案2】:

试试这个 ;)

 List<Map<Integer, Map<Long, Integer>>> myList = new LinkedList<>();
    for(Map<Integer,Map<Long,Integer>> myListMap: myList){
        for(Entry<Integer, Map<Long,Integer> myListMapEntry : myListMap.entrySet()){
             Integer myListMapEntryInt = myListMapEntry.getKey();
             for(Entry<Long, Integer> myListMapEntryValue : myListMapEntry.getValue()){
                    Long myListMapEntryValueLong = myListMapEntryValue.getKey();
                    Integer myListMapEntryValueInteger = myListMapEntryValue.getValue();
             }
        }
    }

【讨论】:

    【解决方案3】:

    只是要小心并能够区分 maplist 迭代

    这里只是一个例子:

    for ( Map<Integer, Map<Long, Integer>> level1 : list){
       for(Map.Entry<Integer,Map<Long, Integer>> level2 : level1.entrySet() ){
          for(Map.Entry<Long,Integer> level3 : level2.getValue().entryList(){ 
          }
       }
    }
    

    【讨论】:

    • 谢谢你,你明白了:)
    猜你喜欢
    • 2014-05-04
    • 1970-01-01
    • 1970-01-01
    • 2022-09-30
    • 1970-01-01
    • 2023-03-26
    • 2017-01-28
    • 1970-01-01
    • 2014-02-05
    相关资源
    最近更新 更多