#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>>
для автоматической сортировки по ключам и значениям для каждого ключа.