Java 8 stream map to list of keys sorted by values

collections, java, java-8, java-stream, lambda

Solution

You say you want to sort by value, but you don't have that in your code. Pass a lambda (or method reference) to `sorted` to tell it how you want to sort.

And you want to get the keys; use `map` to transform entries to keys.

List<Type> types = countByType.entrySet().stream()
        .sorted(Comparator.comparing(Map.Entry::getValue))
        .map(Map.Entry::getKey)
        .collect(Collectors.toList());

Problem

I have map `Map<Type, Long> countByType` and I want to have a list which has sorted (min to max) keys by their corresponding values. My try is: ``` countByType.entrySet().stream().sorted().collect(Collectors.toList()); ``` however this just gives me a list of entries, how can I get a list of types, without losing the order?

Original source