Автоматически сортируется по карте значений в Java

Мне нужно иметьавтоматически Карта сортировки по значениям в Java - так что она будет сортироваться в любое время, пока я добавляю новые пары ключ-значение, или обновляю значение существующей пары ключ-значение, или даже удаляю какую-то запись.

Пожалуйста, имейте в виду, что эта карта будет очень большой (сотни тысяч или даже десятки миллионов записей по размеру).

Поэтому в основном я ищу следующую функциональность:

Предполагается, что у нас есть класс SortedByValuesMap, который реализует вышеупомянутую функциональность, и у нас есть следующий код:

SortedByValuesMap<String,Long> sorted_map = new SortedByValuesMap<String, Long>();
sorted_map.put("apples", 4);
sorted_map.put("oranges", 2);
sorted_map.put("bananas", 1);
sorted_map.put("lemons", 3);
sorted_map.put("bananas", 6);

for (String key : sorted_map.keySet()) {
  System.out.println(key + ":" + sorted_map.get(key));
}

вывод должен быть:

bananas:6
apples:4
lemons:3
oranges:2

В частности, для меня действительно важно иметь возможность получить запись с наименьшим значением в любое время, используя команду типа:

smallestItem = sorted_map.lastEntry();

который должен дать мне запись "апельсины"

РЕДАКТИРОВАТЬ: Я новичок Java, поэтому, пожалуйста, уточните ваши ответы - спасибо

РЕДАКТИРОВАТЬ 2: Это может помочь: я использую это для подсчета слов (для тех, кто знаком: в частности, n-грамм) в огромных текстовых файлах. Поэтому мне нужно построить карту, где ключи - это слова, а значения - частоты этих слов. Однако из-за ограничений (например, ОЗУ) я хочу сохранить только X наиболее часто встречающихся слов - но вы не можете заранее знать, какие слова будут самыми частыми, конечно. Таким образом, я думал, что это может работать (в качестве приблизительного значения), чтобы начать подсчет слов, и когда карта достигает верхнего предела (например, 1 миллион записей), наименее частая запись будет удалена, чтобы сохранить размер карты 1 мил всегда.

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

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