2016-10-17 5 views
0

У меня есть HashMap отображение а Dimension (The key) до ArrayList из Integers (The value). Как я могу отсортировать этот HashMap на основе размера ArrayList из Integers?Сортировка HashMap, который отображается на ArrayList на основе размера ArrayList

HashMap<Dimension,ArrayList<Integer>> map = new HashMap<Dimension,ArrayList<Integer>>(); 

//code to sort: 
+0

Это HashMap; По своей конструкции эта структура несортирована. Вы хотите получить отсортированный массив ArrayList на основе их размера? –

ответ

0

Я предполагаю, что вам нужно, чтобы создать SortedMap из этого HashMap на основе размера значений.
Поскольку HashMap не может поддерживать заказ, я использую LinkedHashMap и используя Java 8 (потоки).

Для того, нисходящее:

Map<String, List<Integer>> collect = map.entrySet().stream() 
        .sorted((entry1, entry2) -> Integer.compare(entry1.getValue().size(), entry2.getValue().size())) 
        .collect(Collectors.toMap(Entry::getKey, Entry::getValue, (a,b) -> a, LinkedHashMap::new)); 

Для порядке убывания:

Map<String, List<Integer>> collect = map.entrySet().stream() 
        .sorted((entry1, entry2) -> Integer.compare(entry2.getValue().size(), entry1.getValue().size())) 
        .collect(Collectors.toMap(Entry::getKey, Entry::getValue, (a,b) -> a, LinkedHashMap::new)); 
Смежные вопросы