Java HashMap ContainsKey和ContainsValue使用要点 - javarevisited


containsKey()和containsValue()方法都在java.util.Map接口中定义,这意味着它们不仅可用于HashMap,而且可用于各种Map,例如 Java中的TreeMap,LinkedHashMap,Hashtable和ConcurrentHashMap。
 
第一点
containsKey()方法返回真,如果一个给定的key是存在于map,下列条件为真:
key==null ? k==null : key.equals(k)
这意味着,如果Map允许使用null键,而您传递null,则containsKey可能返回true。
 
第二点
如果Map不支持空键(如Hashtable ),则containsKey()方法可能会抛出NullPointerException。如果给定key的类型与Map中的key不兼容,它也可能引发ClassCastException。
 
第三点
如果Map包含给定值,则containsValue()方法将返回true:
value==null ? v==null : value.equals(v)
 
第四点
对于大多数Map接口实现,containsValue()可能需要时间随Map大小线性变化,因为它需要遍历Map才能获取值。
 
第五点
与containsKey()类似,containsValue()方法还可以针对不兼容的值抛出ClassCastException,如果值为null且Map实现不支持null值(如Hashtable ),则抛出NullPointerException。