Java 如何在这种映射上迭代或获取特定值?

Java 如何在这种映射上迭代或获取特定值?,java,android,map,for-loop,iterator,Java,Android,Map,For Loop,Iterator,我这样做是为了填充并尝试迭代它: Map<Integer, Map<String, String>> movie = new HashMap<Integer,Map<String, String>>(); Map<String,String> sub = new HashMap<String,String>(); 我要解决的问题是,我的内心。当我只需要外部映射键值所引用的K,V对时,它得到所有子映射值。 在地图中迭代此地图

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

Map<Integer, Map<String, String>> movie = new HashMap<Integer,Map<String, String>>();
Map<String,String> sub = new HashMap<String,String>();
我要解决的问题是,我的内心。当我只需要外部映射键值所引用的K,V对时,它得到所有子映射值。 在地图中迭代此地图的正确方法是什么?如何使用外部贴图的键从内部贴图到达特定的K,V


谢谢

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

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

首先请参见此项

然后像这样你可以得到:

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);


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

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