Есть ли отсортированная коллекция Java, которая обрабатывает дубликаты?

Мне нужна коллекция, которая ведет себя как мультимап C++, но мне также нужно иметь возможность получать элементы по диапазону ключей.


person Steinbitglis    schedule 17.04.2010    source источник


Ответы (3)


В Java нет встроенной коллекции мультикарт. Чтобы решить эту проблему, вы можете сопоставить каждому ключу список значений: например, Map<String, List<String>>. В противном случае есть сторонние библиотеки с реализованными мультикартами — вот один из них.

person Petar Minchev    schedule 17.04.2010

Вы можете просмотреть Коллекции Google. Он имеет несколько реализаций для MultiMap.

person Matt Dearing    schedule 17.04.2010
comment
Особенно. класс Google Collections TreeMultimap включает метод asMap(), возвращающий SortedMap. Затем вы можете вызвать такие методы, как SortedMap.subMap(), чтобы получить сопоставления для диапазона ключей. - person Jared Levy; 18.04.2010

Существует простой хак для создания сортируемых коллекций с несколькими картами в java... Используйте набор данных TreeMap и для ключей введите ключ * 10 ^ 4 + счетчик. Таким образом, вы сохраняете повторяющиеся значения ключа на карте (добавляя счетчик, они на самом деле не являются дубликатами, поэтому вы можете сохранить в treeMap, но вы знаете, что не следует использовать последние четыре цифры целочисленных значений ключа), однако ваш набор данных сортируются с использованием ваших исходных ключевых значений. Обратите внимание, что в зависимости от того, насколько велик ваш набор данных, вы можете настроить 10 ^ n, чтобы убедиться, что он больше, чем количество записей в ваших данных.

person user3760648    schedule 20.06.2014