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

我需要在这里找出与患者 ID 23 关联的键的数量,如上图所示 5 个键是关联的,我遵循了以下方法

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 回答