Мне нужна коллекция, которая ведет себя как мультимап C++, но мне также нужно иметь возможность получать элементы по диапазону ключей.
Есть ли отсортированная коллекция Java, которая обрабатывает дубликаты?
Ответы (3)
В Java нет встроенной коллекции мультикарт. Чтобы решить эту проблему, вы можете сопоставить каждому ключу список значений: например, Map<String, List<String>>
. В противном случае есть сторонние библиотеки с реализованными мультикартами — вот один из них.
Вы можете просмотреть Коллекции Google. Он имеет несколько реализаций для MultiMap
.
Существует простой хак для создания сортируемых коллекций с несколькими картами в java... Используйте набор данных TreeMap и для ключей введите ключ * 10 ^ 4 + счетчик. Таким образом, вы сохраняете повторяющиеся значения ключа на карте (добавляя счетчик, они на самом деле не являются дубликатами, поэтому вы можете сохранить в treeMap, но вы знаете, что не следует использовать последние четыре цифры целочисленных значений ключа), однако ваш набор данных сортируются с использованием ваших исходных ключевых значений. Обратите внимание, что в зависимости от того, насколько велик ваш набор данных, вы можете настроить 10 ^ n, чтобы убедиться, что он больше, чем количество записей в ваших данных.