containsValue vs contains哈希表的方法



哈希表的containsValue和contains方法有什么区别http://docs.oracle.com/javase/7/docs/api/java/util/Hashtable.html

没有。强调我的。

如果此哈希表将一个或多个键映射到此值,则返回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方法中的代码,所以他们只是调用它。

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

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

它们是一样的。如果您不相信文档,请查看源代码(第314行):

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

最新更新