Java HashMap ContainsKey和ContainsValue使用要点 - javarevisited

21-04-22 banq

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。

猜你喜欢