请不要认为这个问题是重复的,尽管我之前有类似的问题,但这次是不同的......
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);
}
}
请告知是否有任何其他方法也更有效,如制作计算器或其他任何方法。
答案 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;