при работе с коллекцией элементов размером менее 5 на основе индекса
Нет, индексация отсутствует. Давайте посмотрим на самый важный метод для Set
:
EmptySet.contains(x)
просто возвращает false
, вообще ничего не нужно делать.
Set1(elem1).contains(elem)
просто нужно сделать одно сравнение elem == elem1
, что нужно будет сделать и с набором хешей после сравнения хешей (поскольку хеши разных значений могут быть одинаковыми) .
Set2
, Set3
и Set4
также просто необходимо (от 1 до 4) сравнений на равенство и ||
.
HashSet.contains
является также однострочным за исключением того, что вся работа выполняется get0
и computeHash
, что довольно сложно. Так что даже в лучшем случае он должен выполнять больше работы.
Методы, отличные от contains
, также могут быть специализированы для небольших размеров. Обратите внимание, что в размере 4 нет ничего особенного, вполне вероятно, что Set5
, Set6
и т. Д. Также будут быстрее, чем HashSet
; но в конечном итоге они станут медленнее, и точка, когда они это сделают, не является фиксированной. Кроме того, их добавление означает, что нужно загружать больше кода, что повсеместно ухудшает производительность. Так что просто нужно где-то остановиться, и было выбрано 4.