Как отсортировать мультикарту/TreeMultimap?

#java #sorting #key-value #multimap

#java #сортировка #ключ-значение #мультикарта

Вопрос:

Я хочу отсортировать multimap по значению ключа (1: n) по возрастанию ключа (например, номер int).

мой код:

 ListMultimap<Integer, myObject> mappy = ArrayListMultimap.create();
  

Теперь данная карта может быть:

 KEY   VALUE
1     myObject_1 
1     myObject_2
3     myObject_3
5     myObject_4
6     myObject_5
4     myObject_6
  

Мне нужно обработать все объекты значений в порядке возрастания: ключ 1, 3, 4, 5, 6…

Как я могу легко получить последовательность?

Любой подход, который я мог бы попробовать?

Комментарии:

1. Как насчет использования SortedSetMultimap?

2. Ну, есть несколько проблем: 1) если карта не является отсортированной картой, вы не можете отсортировать if (например, карта дерева сортируется, хэш-карта — нет), 2) опубликованный вами результат будет похож на сортировку набора записей, поэтому вы можете захотеть получить все записи (как вы это сделаете, зависит от используемой вами библиотеки), поместить их в список, а затем отсортировать на основе первого ключа и второго значения. Однако эта сортировка не будет отражена на карте.

3. Начиная с Java 8, использование Map<Key,Collection<Value>> уже не так сложно, поэтому вы можете согласиться на это. В этом случае вы могли бы использовать TreeMap<Key,TreeSet<Value>> для автоматической сортировки по ключам и значениям для каждого ключа.