Я только что видел код метода contains в java.util.Hashtable.java. Он имеет цикл, который просматривает каждую запись в Hashtable и сравнивает ее с переданным аргументом.
Я читал, что метод содержит постоянное время. Как это возможно, когда у него есть цикл, который просматривает каждую запись.
public synchronized boolean contains(Object value) {
if (value == null) {
throw new NullPointerException();
}
Entry tab[] = table;
for (int i = tab.length ; i-- > 0 ;) {
for (Entry<K,V> e = tab[i] ; e != null ; e = e.next) {
if (e.value.equals(value)) {
return true;
}
}
}
return false;
}