迭代hashmap以获取唯一键的计数

时间:2013-08-29 09:52:27

标签: java

代码如下所示:

Map<string , list> qsnMap =new hashmap <string , list>;
If(qsnMap !=null){
    Iterator<Map.Entry<string , list>> entries = 
    qsnMap.entrySet().iterator();
    While(entries.hasNext()){
        Map.Entry<string , > entry = entry.next();
        String mapKey = entry.getKey();
    }
}

假设数据显示为

“123,abc”“abc”
“234,gdd”“gdd”
“434,dhd”“dhd”
“123,mnb”“mnb”

这里我想使用数字作为键,然后在while循环中使用map来获取唯一键的计数...即上述数据的计数应为3

希望这更容易理解。

7 个答案:

答案 0 :(得分:2)

由于Map不包含任何重复键,您只需使用qsnMap.size()即可获得唯一键的数量。

答案 1 :(得分:1)

Map的基本合同是允许重复密钥。因此,地图中的所有keys都默认为唯一

这是因为Map使用Set来保存密钥,Set不允许重复元素

Set的javadoc说

  

包含无重复元素的集合。更正式的,集合   不包含元素e1和e2对,使得e1.equals(e2)和at   大多数一个null元素。正如其名称所暗示的,这个界面模型   数学集抽象

答案 2 :(得分:1)

文档说,如果您尝试使用已在地图中的键添加新值,则会使用新值替换该值并返回旧值。

因此,如果您想知道键值对的大小/长度/数量,可以使用

找到它
mapObject.size();

来自oracle docs&gt;&gt;

公共V放(K键,          V值) 将指定的值与此映射中的指定键相关联。如果地图以前包含该键的映射,则替换旧值。

<强>参数:

- 与指定值相关联的键

- 与指定键关联的值

返回:     与键关联的上一个值,如果没有键的映射,则返回null。 (null返回也可以指示映射先前将null与key关联。)

答案 3 :(得分:1)

地图中的按照定义唯一! 地图不允许重复密钥!

您可以阅读herehere(德语),here

答案 4 :(得分:0)

地图中的所有键都是唯一的。

所以

Set keySet = map.keySet();
keySet.size();  //this is count of keys

该组的大小是计数。

或简称map.size()是您的钥匙计数。

答案 5 :(得分:0)

地图永远是独一无二的。即使你再次使用相同的密钥。旧密钥将被新密钥替换。

请了解如何使用地图。 This link应该是有用的

答案 6 :(得分:0)

您可以从http://docs.oracle.com/javase/tutorial/collections/index.html开始。首先要清楚基础知识。