java.util.Hashtable.javaでcontainsメソッドのコードを見ただけです。 Hashtableの各エントリをスキャンし、渡された引数と比較します。ハッシュテーブルにcontainsメソッドが複雑になるのはなぜですか?
私は、メソッドが含まれていることを読む一定の時間がかかります。各エントリをスキャンするループがあると、どのように可能になりますか?
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;
}
あなたはコードのその部分を投稿できますか? –
containsまたはcontainsKeyについて質問していますか?マップに値が含まれているかどうかを確認するチェックが含まれており、すべてのエントリをチェックする必要があります。 –
パフォーマンスが懸念される場合は、スレッドセーフである必要がある場合は、HashMapまたはConcurrentHashMapを考慮する必要があります。 –