在哈希映射中搜索重复项并打印出实例数

时间:2013-06-19 23:50:34

标签: java hashmap

我正在使用Hashmap来存储结果集。

HashMap<String,Integer> hMap = new HashMap<String,Integer>();

String existsUser = "select NAME" +" from Details where MEMID =" + memid;
rs = stmt.executeQuery(existsUser);

这是示例数据库

NAME: 插口 JILL 约翰 JACK

我需要分别显示每个名字的出现次数,我该怎么办? 例如:Jack-2,Jill -1

我目前有这段代码:

 if(count == 0) {
hMap.put(rs.getString("NAME"),1); //get the string 

   }else {
hMap.put(rs.getString("NAME"),count +1); 
   }        

4 个答案:

答案 0 :(得分:2)

可以从不同的SQL查询中完成。

String existsUser = "SELECT name, count(*) AS occurances FROM Details WHERE memid = " + memid + " GROUP BY name";

结果集将有两列“name”和“occurrence”。你马上得到你想要的东西。

答案 1 :(得分:0)

Map<String, Integer> names = new HashMap<String, Integer>();
// sample loop for illustration; loop over your ResultSet if you wish
for String name : results) {
    if (names.containsKey(name) {
       int count = names.get(name);
       names.put(name, ++count);
    } else {
        names.put(name, 1);
    }
}

答案 2 :(得分:0)

Hashmaps不能有重复...

如果要跟踪地图中的重复项,请使用该项作为键,并将出现作为值。

每当您多次看到某个键时,会增加计数器(键的值)。

如果您还没有看到它,请将密钥设置为1

答案 3 :(得分:0)

    Map<String, Integer> hMap = new HashMap<String, Integer>();
    while (rs.next()) {
        String name = rs.get("NAME");
        int count = hMap.containsKey(name) ? hMap.get(name) : 0;
        hMap.put(name, count + 1);
    }
    for (Map.Entry<String, Integer> entry : hMap.entrySet()) {
        System.out.println(entry.getKey() + "-" + entry.getValue());
    }