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