Когда сортируются TreeMap и ConcurrentSkipListMap?

У меня есть карта, для которой я предоставляю ключевой класс, для которого я реализовал компаратор. Компаратор частично основан на времени, поэтому порядок может измениться с течением времени. Вопрос в том, когда производится сравнение между объектами, во время вставки в карту или во время создания итератора?

Сделайте ваши ключи неизменяемыми. Это делается во время вставки и назначается место в памяти.

Yassin Hajaj 26.03.2019 19:47

Во время вставки. Но вы легко можете проверить это сами, изучив код этих классов. А компаратор основан на времени, это может вызвать проблему, когда вы не сможете получить элементы из этого TreeMap по ключу.

Ivan 26.03.2019 19:50
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
44
1

Ответы 1

Дерево построено на вставке.

Также обратите внимание на следующее предупреждение в javadoc Map:

Note: great care must be exercised if mutable objects are used as map keys. The behavior of a map is not specified if the value of a [key] object is changed in a manner that affects equals comparisons while the object is a key in the map.

Итак, метод сравнения должен быть стабильным, т.е. не должен меняться с течением времени.

При каждом изменении ключа его необходимо удалить перед изменением и повторно добавить после изменения.

Другие вопросы по теме