【问题标题】:How to iterate or get specific values on this kind of Map?如何在这种 Map 上迭代或获取特定值?
【发布时间】:2012-06-22 09:36:33
【问题描述】:
Map<Integer, Map<String, String>> movie = new HashMap<Integer,Map<String, String>>();
Map<String,String> sub = new HashMap<String,String>();

我这样做是为了填充并尝试迭代它:

Iterator<Element> releases = doc.select(
                    "div.pmovie > div.releases > div.release").iterator();
        Iterator<Element> subt = doc.select(
                "div.release-info > div.section > div.links > div > a")
                .iterator();
        int movindex = 1;
        while (subt.hasNext()) {
            Element rel = releases.next();
            Element subti = subt.next();
            release = rel.text();
            Log.v("RELEASES", release);
            subtitulo = subti.attr("href");
            Log.v("SUBTITULO", subtitulo);
            sub.put(release,subtitulo);
            movie.put(movindex, sub);
            movindex++;

        }

for (Entry<Integer, Map<String,String>>  entry : movie.entrySet()) {    
             key = entry.getKey();
             sub = entry.getValue();
                    for (Entry<String,String> entrada : sub.entrySet()) {

                        subtitle = entrada.getKey();
                        ruta = entrada.getValue();
               Log.v("SUB ITERATOR", key+" "+subtitle);


            }

我遇到的问题是内在的“for”。当我只需要外部 Map 键值引用的对 (K,V) 时,它正在获取所有“子”映射值。 在 Map 中迭代此 Map 的正确方法是什么?如何使用外部 Map 的键从内部 Map 到达特定的 (K,V)?

谢谢!

【问题讨论】:

    标签: java android map for-loop iterator


    【解决方案1】:

    你想要达到的目标不是很清楚。但问题可能在于您填充地图的方式。您对所有键使用相同的sub,因此它们都指向包含所有记录的同一个映射。每次增加 movieIndex 时,您可能应该为 sub 分配一个 new HashMap&lt;String, String&gt;()

    但如果您这样做,根据您的代码示例,每个键 (movieindex) 将指向一个仅包含一个条目的映射。

    【讨论】:

      【解决方案2】:

      第一个看到这个Java Hashmap: How to get key from value?

      然后像这样你就可以得到:

      for (Map.Entry<String, List<String>> entry : map.entrySet()) {
          List<String> list = entry.getValue();
          // Do things with the list
      }
      

      我们可以通过调用map.keySet() 来迭代键,或者通过调用map.entrySet(). 来迭代条目

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-09
        • 1970-01-01
        • 2020-06-26
        相关资源
        最近更新 更多