Есть ли сортированная коллекция Java, которая обрабатывает дубликаты?
-
27-09-2019 - |
Вопрос
Мне нужна коллекция, которая ведет себя что-то вроде MultiMAP C ++, но мне также нужно иметь возможность получить элементы диапазоном клавиш.
Решение
В Java нет встроенной коллекции MultiMap. Чтобы решить это, вы можете отобразить на карту каждому ключу список значений: Map<String, List<String>>
, Например. В противном случае есть сторонние библиотеки с реализованными мультимаптами - здесь один из них.
Другие советы
Вы можете посмотреть в Коллекции Google. Отказ Он имеет несколько реализаций для MultiMap
.
Существует простой взлом вокруг создания MultiMap Villable Collections в Java ... Используйте DataSet TREEWAP и для ключей введите клавишу * 10 ^ 4 + счетчик. Таким образом, вы храните дубликаты ключевых значений на карте (добавив счетчик, на самом деле не дублируется, поэтому вы можете хранить в TREEWAP, но вы знаете, не используете последние четыре цифры целочисленных значений целых), однако ваш набор данных Быть отсортированным с использованием ваших оригинальных ключевых значений. Обратите внимание, что в зависимости от того, насколько большой набор данных вы можете настроить 10 ^ n, чтобы убедиться, что он больше, чем количество записей в ваших данных.