根据ArrayList大小

时间:2016-10-17 18:47:13

标签: sorting arraylist hashmap dimension

我有一个HashMap映射Dimensionkey)到ArrayList Integersvalue)。如何根据HashMap的{​​{1}}的大小对此ArrayList进行排序?

Integers

1 个答案:

答案 0 :(得分: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));