сортировка карт группировки по счету - PullRequest
0 голосов
/ 20 ноября 2018

Есть ли способ сортировки карты по значению внутри этого коллектора без создания нового потока?Теперь он печатает: AAS: 5 ABA: 195 ABC: 12 ABE: 52. Желаемый: ABA: 195 ABE: 52 ... getTrigraphStream (путь) возвращает: КАК TRA GRI ONC GRI ONC INS WHE INS WHE

 public Map<String, Long> getTrigraphStatisticsMapAlphabet(String path) {
    return getTrigraphStream(path)
       .collect(groupingByConcurrent(Function.identity(),
           ConcurrentSkipListMap::new, counting()));
    }

1 Ответ

0 голосов
/ 20 ноября 2018

Есть ли способ сортировки карты по значению внутри этого коллектора без создания нового потока?

Ответ - Нет. Вы можете сортировать только по значению группировки после того, как вы закончили группировать .

Параметры:

  1. Вам потребуется вызвать метод stream() после группировки и отсортировать по значению, а затем собрать на карту.
  2. использовать collectingAndThenс функцией отделки, чтобы сделать сортировку и затем собрать на карту.

т.е.

return getTrigraphStream(path)
       .collect(collectingAndThen(groupingByConcurrent(Function.identity(), counting()),
                  map -> map.entrySet().stream().sorted(....).collect(...)));

Кстати, в чем проблема с созданием нового потока?это дешевая операция.

...