关于计算密钥总数

时间:2013-01-09 18:29:51

标签: java

请不要认为这个问题是重复的,尽管我之前有类似的问题,但这次是不同的......

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

请告知是否有任何其他方法也更有效,如制作计算器或其他任何方法。

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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;