如何在地图值是集合的情况下按值大小对地图条目进行排序?

时间:2019-04-04 17:23:27

标签: java collections java-stream

有没有一种方法可以按值对映射条目进行排序,而值是一个集合?我想按条目集合的大小对条目进行排序。到目前为止,我的代码:

public Map<Object, Collection<Object>> sortByCollectionSize() {
    return myMap.entrySet().stream().sorted(Map.Entry.<Object, Collection<Object>>comparingByValue())
            .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (e1, e2) -> e1, LinkedHashMap::new));
}

1 个答案:

答案 0 :(得分:2)

您可以通过Comparator.comparingInt使用它,方法如下:

return myMap.entrySet()
            .stream()
            .sorted(Comparator.comparingInt(e -> e.getValue().size()))
            .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (e1, e2) -> e1, LinkedHashMap::new));