Поскольку контракт equals()
для Set
требует, чтобы элементы двух объектов Set
были идентичными, я не думаю, что это можно правильно реализовать в O ( 1) в общем случае (например, без дополнительных ограничений на типы контента).
Одно очевидное исключение состоит в том, что если входящий набор имеет другой размер, то операция equals()
может легко завершиться в O (1) (при условии, что сам size()
равен O (1)).
Вы можете написать тонкую оболочку, которая кэширует hashCode()
каждый раз, когда вычисляется (и удаляет ее при изменении Set
). Это позволит вам иметь постоянное время выполнения в большинстве случаев, когда два Set
объекта не идентичны. Если вам нужно равняться Set
объектам (или в случае коллизий хешей), у вас все равно будет время выполнения O (n).