У нас есть коллекция объектов, каждый объект имеет целочисленный идентификатор и отметку времени. Мы хотим иметь возможность искать дубликаты и обновлять коллекцию на основе идентификатора.
Но мы также хотим иметь возможность взять «кусок» коллекции, например, найти каждый объект с отметкой времени после заданного времени. Итак, мы также хотим отсортировать по отметке времени.
Мы используем TreeMap, который на первый взгляд дал нам то, что мы хотели. Но поскольку TreeMap (и все, что происходит от SortedSet) использует только compareTo() и игнорирует метод equals(), мы обнаруживаем, что поиск дубликатов на основе идентификатора не работает. Наш метод compareTo() пытается учесть оба условия (поиск по идентификатору ИЛИ временной метке), но в конечном итоге он большой и уродливый и на самом деле не работает. :)
Эта коллекция может стать очень большой, поэтому, конечно, мы хотим максимально быстрого поиска/сортировки/вставки.