2014-02-15 44 views
0

我试图在JAVA中实现HashMap,在我的算法中,我必须查找是否有任何键包含特定值以外的值....例如,可以说,地图中的所有键都应该存储值为0。检查哈希映射是否包含某个值以外的值

我如何检查,该地图包含的值不等于0

我试过,但逻辑上是不正确的,我知道:

if(!hm.containsValue(0)) /* where hm is hashmap object*/ 
+0

“在HashMap中搜索一个值是在恒定时间O(1)” - > uhm no,这将用于密钥查找,即使这样它不是O(1) – fge

+1

我无法理解你的问题。你正在实现你自己的'HashMap',还是使用Java提供的?顺便说一句,在'HashMap'中搜索值不是'O(1)'操作。 –

+0

@fge:删除最后一行...您的评论添加到我的知识:) – NoobEditor

回答

4

你必须遍历所有的值,并检查每一个,看看它是不是等于零,这就是O(n)。没有替代方案使用MapMap对于找到密钥非常有效,而不是用于找到中的某些内容。例如,在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; 
    } 
} 
+0

理论上可以抛出一个NPE,但...;) – fge

+0

@fge这是一个有效的点,我更新了我的答案 –

+0

@ÓscarLópez:noob问题,这一行的目的是什么'整数零=新整数(0);'我的意思是我明白定义一个整数,但其中的'(0)'做什么? – NoobEditor

1

可以定义图如下:

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
+2

没有帮助...我的问题是针对地图中的'value',而不是'key' ... – NoobEditor

+0

更新了答案,以检查它是否包含某个值 –

+0

再次没有帮助.....'0'是整数值,您的地图将'String'设置为'value' – NoobEditor