0
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 を反復する正しい方法は何ですか? 外側のマップのキーを使用して、内側のマップから特定の (K,V) に到達するにはどうすればよいですか?

ありがとう!

4

2 に答える 2

0

あなたが達成しようとしていることはあまり明確ではありません。しかし、問題はおそらくマップへの入力方法にあります。すべてのキーに同じものsubを使用するため、それらはすべて、すべてのレコードを含む同じマップを指します。new HashMap<String, String>()をインクリメントするたびに、おそらく a を sub に割り当てる必要がありますmovieIndex

しかし、これを行うと、コード サンプルに基づいて、各キー (movieindex) は 1 つのエントリのみを含むマップを指します。

于 2012-06-20T09:25:41.087 に答える
0

まず、このJavaハッシュマップを参照してください:値からキーを取得する方法は?

そして、このようにしてそれを得ることができます:

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

を呼び出してキーを反復処理したり、呼び出しmap.keySet()てエントリを反復処理したりできます。map.entrySet().

于 2012-06-20T09:28:39.267 に答える