-1

以前に同様の質問がありましたが、今回は異なりますが、この質問を重複と見なさないでください..

Map <String, String>m = new LinkedHashMap<String, String>();
m.put ("123", "23"); 
m.put ("323", "23");
m.put ("153", "23");
m.put ("623", "23");
m.put ("125", "23");
m.put ("122", "24");
m.put ("167", "24");
m.put ("173", "24");
m.put ("113", "25");

上記の 5 つのキーが関連付けられているように、ここで患者 ID 23 に関連付けられているキーの数を調べる必要があります。以下のアプローチに従いました。

List<String> keys = new ArrayList<String>();
        for(String str: m.keySet())
        {
            if(m.get(str).equals("23")) {
                keys.add(str);
                System.out.println(str);
            }
        }

comprator などを作成するなど、より効率的な他のアプローチもあるとアドバイスしてください。

4

2 に答える 2

1

Map.entrySet() を使用してマップを反復し、一致があるかどうかを確認してカウントを増やします。

キーの数または合計が必要かどうかは本当に不明です。

カウントだけが必要な場合:

Map<String, String>m = new LinkedHashMap<String, String>();
        int count=0;
        for(Map.Entry<String,String> en: m.entrySet()){
            if(en.getValue().equals("23")){
                count++;
            }

        }
        System.out.println(count);

合計が必要な場合:

Map<String, String>m = new LinkedHashMap<String, String>();
        int sum=0;
        for(Map.Entry<String,String> en: m.entrySet()){
            if(en.getValue().equals("23")){
                sum+=Integer.parseInt(en.getKey());
            }

        }
        System.out.println(sum);
于 2013-01-09T18:33:16.167 に答える
0
for(String str: m.values())
        {
            if(m.equals("23")) {
                keys.add(str);

            }
        }

ハッシュ ルックアップを回避しています。また、カウントが必要な場合。それから

int count = 0;
for(String str: m.values())
            {
                if(m.equals("23")) {
                    count++
                }
            }
return count;
于 2013-01-09T18:35:02.140 に答える