containsValue vs包含Hashtable的方法

时间:2014-08-17 20:12:33

标签: java

containsValue和包含Hashtable方法之间的区别是什么 http://docs.oracle.com/javase/7/docs/api/java/util/Hashtable.html

3 个答案:

答案 0 :(得分:4)

没有。强调我的。

  

如果此哈希表将一个或多个键映射到此值,则返回true。   请注意,此方法的功能与contains(早于Map界面)相同。

所以你可以使用其中任何一个,我会更频繁containsValue(),因为它更加不言自明,但那只是我。

同一事物有两种不同方法的原因是因为HashTable implements Map<K, V>接口。我还不知道您是否已经使用过接口,但implement接口所需的所有类都必须具有interface中定义的所有方法。因此,由于Mapboolean containsValue(Object value);的定义implement HashTable它(如containsValue()}也必须拥有该方法。这就是contains()存在的原因。

那么我们为什么还必须contains()?好吧,那是因为Map存在,甚至在contains()界面存在之前就已存在(参见上面的文档片段)。 Map排在第一位,这就是它拥有所有功能的原因。添加containsValue()界面后,该类必须添加contains方法,并且他们不想复制{{1}}方法中已有的代码,因此他们只是叫它。

答案 1 :(得分:2)

如果您阅读contains()的完整文档,则会看到

  

请注意,此方法的功能与containsValue相同(它是集合框架中Map接口的一部分)。

答案 2 :(得分:2)

他们是一样的。如果您不相信文档,请查看source code(第314行):

public boolean containsValue(Object value) {
    return contains(value);
}