Java: отсортированная коллекция, которая допускает дублирование, экономит память и обеспечивает быструю вставку + обновление

В частности, мне нужна коллекция, которая использует одно поле A для доступа и другое (поле S) для сортировки, но отсортированной коллекции, которая принимает дубликаты, было бы достаточно.

Я часто прихожу к тому моменту, когда мне нужна именно эта коллекция, а TreeMap не является опцией, так как не допускает дублирование. Так что теперь пришло время спросить здесь. Есть несколько обходных путей, как указано на stackoverflowВот а такжеВот - а именно:

PriorityQueue: slow update (remove(Object) + add(Object)), and boxing of primitive keys Fibonacci heap: memory waste (?) TreeMap<Field_S, List<Value>>: problem for me is the memory overhead of the list, and boxing of primitive keys sorted list or array: problem is the slow insert and remove -> should I implement one segmented sorted list? TreeMultimap from guava (docs): external dependency and probably memory inefficient (?)

Кто-нибудь с лучшими предложениями? Или я должен сыграть свою собственную отсортированную структуру данных (какую?)? Также были бы хороши другие источники (в Java, с открытым исходным кодом, с юнит-тестами и небольшими приложениями).

Update

Более подробная информация о моем случае использования на данный момент (хотя у меня аналогичный спрос в последний раз). У меня есть коллекция (с миллионами) ссылок, где я хочу иметь возможность

to poll or get the smallest element regarding field S and update field S with the help of field A identical values of field S can happen. field A is actually a integer pointing into another array the only dependency I want is trove4j. I could use a different like the mahout collections if that would be required. But not guava as although a nice lib the collections are not tuned to be memory efficient (boxing/unboxing).

Таким образом, все кричат о куче Фибоначчи, но я боюсь, что она имеет слишком много накладных расходов на элемент - & gt; По этой причине я подумал о более эффективном по памяти «отсортированном + сегментированном массиве». решение.

Ответы на вопрос(6)

Ваш ответ на вопрос