2016-10-17 60 views
0

我有一個HashMap映射Dimension(所述key)至Integers一個ArrayList(該value)。我如何根據IntegersArrayList的大小對此HashMap進行排序?排序HashMap來的ArrayList基於ArrayList的大小

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

//code to sort: 
+0

這是一個HashMap;按照設計,這種結構是未分類的。你想根據它們的大小獲得一個ArrayList的排序數組嗎? –

回答

0

我猜你需要根據值的大小從這個HashMap中創建一個sortedMap。
由於HashMap無法維護排序,因此我使用LinkedHashMap並使用Java 8(Streams)

對於升序:

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));