我试图在JAVA中实现HashMap
,在我的算法中,我必须查找是否有任何键包含特定值以外的值....例如,可以说,地图中的所有键都应该存储值为0。检查哈希映射是否包含某个值以外的值
我如何检查,该地图包含的值不等于0
我试过,但逻辑上是不正确的,我知道:
if(!hm.containsValue(0)) /* where hm is hashmap object*/
我试图在JAVA中实现HashMap
,在我的算法中,我必须查找是否有任何键包含特定值以外的值....例如,可以说,地图中的所有键都应该存储值为0。检查哈希映射是否包含某个值以外的值
我如何检查,该地图包含的值不等于0
我试过,但逻辑上是不正确的,我知道:
if(!hm.containsValue(0)) /* where hm is hashmap object*/
你必须遍历所有的值,并检查每一个,看看它是不是等于零,这就是O(n)
。没有替代方案使用Map
,Map
对于找到密钥非常有效,而不是用于找到值中的某些内容。例如,在Java中使用标准的Map
实现:
Integer zero = new Integer(0);
for (Integer i : hm.values()) {
if (!zero.equals(i)) {
System.out.println("found one non-zero value");
break;
}
}
理论上可以抛出一个NPE,但...;) – fge
@fge这是一个有效的点,我更新了我的答案 –
@ÓscarLópez:noob问题,这一行的目的是什么'整数零=新整数(0);'我的意思是我明白定义一个整数,但其中的'(0)'做什么? – NoobEditor
可以定义图如下:
Map<String, Integer> map = new HashMap<String, Integer>();
并检查它是否包含一个非零值,如下所示:
for (Integer value: map.values()) {
if (value != 0) {
// non-zero value found in the map
}
}
(1)012h
没有帮助...我的问题是针对地图中的'value',而不是'key' ... – NoobEditor
更新了答案,以检查它是否包含某个值 –
再次没有帮助.....'0'是整数值,您的地图将'String'设置为'value' – NoobEditor
“在HashMap中搜索一个值是在恒定时间O(1)” - > uhm no,这将用于密钥查找,即使这样它不是O(1) – fge
我无法理解你的问题。你正在实现你自己的'HashMap',还是使用Java提供的?顺便说一句,在'HashMap'中搜索值不是'O(1)'操作。 –
@fge:删除最后一行...您的评论添加到我的知识:) – NoobEditor