哈希表的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
中定义的所有方法。因此,因为Map
有boolean 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);
}