Как говорилось в большинстве других постеров, это обычно операция O (N), потому что вам придется просматривать весь список значений хеш-таблиц независимо. У @tackline есть правильное решение для сохранения использования памяти на уровне O (1) (за него я проголосовал).
Другой вариант - пожертвовать памятью ради скорости. Если ваша карта имеет разумный размер, вы можете хранить две карты параллельно.
Если у вас есть Карта, тогда поддерживайте Карту параллельно с ней. Когда вы вставляете / удаляете на одной карте, делайте это и на другой. Конечно, это уродливее, потому что вы тратите место впустую, и вам нужно убедиться, что метод «hashCode» DomainObj написан правильно, но ваше время удаления падает с O (N) до O (1), потому что вы можете искать ключ / отображение объекта в постоянном времени в любом направлении.
Как правило, не самое лучшее решение, но если ваша проблема номер один - скорость, я думаю, что это, вероятно, так же быстро, как вы собираетесь.
====================
Приложение: По сути, это то, что @msaeed предложил без сторонней библиотеки.