2014-01-03 3 views
1

Я использую treeMap в java. Я хочу получить отсортированный список/коллекцию всех значений. Будет ли TreeMap.values ​​() делать трюк?являются значениями в treeMap отсортированы: java

Коллекция, которую я получаю, будет ли она сортироваться на основе набора ключей, или эта коллекция будет случайной.

Спасибо.

+1

TreeMap отсортированный по ключам, а не по значениям. См. Этот вопрос, если вы хотите отсортировать свою карту по значениям: http://stackoverflow.com/questions/1448369/how-to-sort-a-treemap-based-on-its-values ​​ – fluminis

ответ

5

Он сортируется: итератор Treemap.values()

В коллекции возвращает значения в порядке возрастания соответствующих ключей.

+0

ok, так что я могу сделать сбор .getindex (5)? это даст мне значение в 5-м индексе этой коллекции. – Sunny

+1

Вы можете попробовать метод Collection '.toArray()', который возвращает массив в той же последовательности, что и итератор. В противном случае просто используйте итератор ... – vikingsteve

+0

еще одна вещь. как сделать этот массив в списке массивов? – Sunny

2

Да, TreeMap реализует NavigableMap, которая простирается SortedMap и рассортированные таким образом (с помощью ключа).

0

Как указано в Javadoc из TreeMap.values ​​():

итератора В коллекции возвращает значения в порядке возрастания соответствующих ключей

Таким образом, коллекция возвратившихся может быть итерация в порядке возрастания ключей.

Для достижения более гибкого способа сортировки значений карты я обычно использую следующую закономерность:

List listOfValues = new ArrayList(); 
Comparator valuesComparator = ...; 
listOfValues.addAll(myTreeMap.values()); 
Collections.sort(listOfValues, valuesComparator); 
Смежные вопросы