Я знаю разницу между Open Addressing и Chaining для разрешения хэш-коллизий. Большинство базовых структур данных на основе хэшей, таких как HashSet
, HashMap
в Java, в основном используют метод цепочки. Я читал, что ThreadLocal на самом деле использует схему зондирования. Итак, я хочу понять, почему открытая адресация не так часто используется в Java? Я имею в виду, что было бы трудно удалить записи, используя эту схему, в том смысле, что вам нужно пометить эти ячейки с помощью какой-то специальной обработки. Однако похоже, что требования к памяти будут низкими для открытой схемы адресации.
Изменить:Я просто хочу понять возможную основную причину / причины этого дизайнерского решения. Я не хочу более мелких деталей. Также я хотел бы знать, почему ThreadLocal использует менее распространенный метод открытой адресации. Я предполагаю, что два ответа могут быть связаны вместе. Поэтому я предпочитаю задавать тот же самый вопрос.