Если вы храните свои данные в отсортированной карте, например, TreeMap
, вам не нужно создавать .sorted()
версию потока;сборщик будет естественным образом сортировать данные, сохраняя их в TreeMap
.
. Ваш .collect()
вызов должен вернуть TreeMap
, чтобы результат был присвоен TreeMap
, поэтому Collectors.toMap()
должен принять поставщика, который создает TreeMap
для коллектора, чтобы разрешить распространение требуемого типа.
Например)
jshell> String[] data = { "apple", "pear", "orange", "cherry" };
data ==> String[4] { "apple", "pear", "orange", "cherry" }
jshell> var map = Arrays.stream(data)
...> .collect(Collectors.toMap(s -> s,
...> s -> s.length(),
...> (a,b) -> a,
...> TreeMap::new));
map ==> {apple=5, cherry=6, orange=6, pear=4}
В результате TreeMap
показывает данныеотсортировано по ключу.