2

重複の可能性:
マップ内の各エントリを反復するにはどうすればよいですか?
<String, POJO> のマップを反復するにはどうすればよいですか?

私は次のコードを書きましたが、ハッシュマップの反復処理に行き詰まっています。

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;

class demo
{
    public static void main(String v[]) {
        ArrayList<String> contactIds = new ArrayList<String>();
        contactIds.add("2");
        contactIds.add("3");

        HashMap names = new HashMap();
        names =  getNames(contactIds);

        // I want to get the total size of the hashmap  - names
        // for ex now there are 6 elements inside hashmap.
        // How can I get that count?

    }


    private static HashMap getNames(ArrayList contactIds) {
        HashMap names = new HashMap();
        String params = null;
        List<String> list = new ArrayList<String>();
        for(int i=0; i<contactIds.size();i++) {
            params = contactIds.get(i).toString();

            list.add(0,"aer-1");
            list.add(1,"aer-2");
            list.add(2,"aer-3");

            names.put(params,list) ;
         }

        return names;
    }
}

このコードでは、マップ内に 6 つの要素があります。メイン メソッドで、マップを反復処理して合計数を取得するにはどうすればよいでしょうか?

ありがとうございました。

4

3 に答える 3

7

あなたの質問はここで尋ねられ、答えられます:

マップ内の各エントリを効率的に反復する方法は?

for (Map.Entry<String, String> entry : map.entrySet()) {
    System.out.println(entry.getKey() + "/" + entry.getValue());
}
于 2013-01-13T07:18:29.537 に答える
3

JavaDocを見てください。HashMap.size()合計数とHashMap.values()マップ内のすべての値、またはHashMap.entries()キーと値の各ペアを探しています。

于 2013-01-13T07:17:34.350 に答える
1

「マップ」データ構造はコレクション オブジェクトではありませんが、セットはコレクション オブジェクトです。

Map を反復処理する最も一般的な方法は、基になる .entrySet メソッドを使用することです。

// For each loop
for ( Entry<String, String> entry : names ) {
    System.out.println( String.format( "(%s, %s)", entry.getKey(), entry.getValue() ) );
}

// Iterator
Iterator iterator = names.entrySet().iterator
while( iterator.hasNext() ){
     Entry entry = iterator.next()
     System.out.println( String.format( "(%s, %s)", entry.getKey(), entry.getValue() ) );
}

Map ノードの総数を知りたい場合は、.size() メソッドを使用します。

編集:

マップ内に格納されている各リストの合計サイズが必要なため、次のようにすることができます。

Iterator iterator = names.entrySet().iterator
int count = 0;

while( iterator.hasNext() ){
     Entry entry = iterator.next()
     count += entry.getValue().size()
}
于 2013-01-13T09:34:07.980 に答える