How to collect to Map<String, List<String>> to acheve that List is sorted?

gstackoverflow :

I have code like this:

final TreeMap<String, List<MyBean>> map= elements.stream()
                .filter(....)
                .collect(Collectors.groupingBy(MyBean::getName,
                        TreeMap::new,
                        Collectors.toList()
                ));

How to achieve that List is sorted by someStringField ?

Flown :

You can add a Collectors#collectingAndThen to your Collectors#toList downstream:

final TreeMap<String, List<MyBean>> map = elements.stream()
      .collect(Collectors.groupingBy(MyBean::getName,
              TreeMap::new,
              Collectors.collectingAndThen(
                      Collectors.toList(),
                      l -> {
                          l.sort(Comparator.comparing(MyBean::getSomeStringField));
                          return l;
                      })
      ));

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=366647&siteId=1