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
}