我有一张地图存储脚本编号和患者ID在地图中脚本编号是关键正弦它始终是唯一的,如下所示
Map m = new LinkedHashMap();
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个不同的脚本,患者ID为23,所以我需要计算总的不同脚本 和脚本编号也与患者Id 23相关联,即123,323,153,623,125
我已将值显示为示例,但在我的情况下,动态值将填充在Map中,因此请提示。
答案 0 :(得分:2)
听起来你需要另一个方向的地图,将患者身份识别为计数。每次插入新记录时,get
该患者的条目,并递增它。
答案 1 :(得分:1)
如果LinkedHashMap
是您拥有的唯一数据结构,唯一的方法是迭代它,并将每个患者ID与23
进行比较。
如果由于某种原因这不令人满意,您可以构建辅助数据结构。但是,如果不了解您的问题,很难在这方面提出具体建议。
答案 2 :(得分:1)
遍历您的Map
或创建Map
,其中'Patient Id'是关键,值是'script No'的列表。
//Field to store the data in:
Map<PatientId, List<ScriptId>> partientScriptMap = new HashMap<PatientId,
// method to add data
void add(PatientId p, ScriptId s) {
List<ScriptId> scriptIds = partientScriptMap.get(p);
if (null == p) {
scriptIds = new ArrayList<ScriptId>();
}
scriptIds.add(s);
partientScriptMap.put(p, scriptIds);
}
// get all ScriptIds related to a PationId
List<ScriptId> getScriptIds(PatientId p) {
return partientScriptMap.get(p);
}
您的ScriptIds和PatientIds是否都是字符串,请在上面的代码中用String
替换它们
而且你会像这样使用它:
add("123", "23");
add("323", "23");
add("153", "23");
add("623", "23");
add("125", "23");
add("122", "24");
add("167", "24");
add("173", "24");
add("113", "25");
System.out.println("scriptIds for 24: "+getScriptIds("24");
答案 3 :(得分:0)
int count = 0;
for (int i = 0; i < m.size(); i ++) {
if (m.get(i) == 23) count ++;
}
直接循环并检查每个结果23.
答案 4 :(得分:0)
首先,你应该使用泛型,它们更容易使用。
现在您要做的就是浏览每个键,看看相关值是否符合您的要求:
Map<String, String> m = new LinkedHashMap<String, String>();
...
List<String> keys = new ArrayList<String>();
for(String str: m.keySet()) {
if(m.get(str).equals("23")) {
keys.add(str);
}
}