Например, если мы пробегаем stream'ом по map и подсчитываем с нем количество каждого символа, то нужно уменьшать количество каждого символа на то, число которое мы нашли на каждой итерации.
На выходе получаем freqs - соответствие значений и частот. Подкрути под свою задачу.
Другой вариант - завести мутабельный контейнер вне стрима, а от стрима позвать forEach, который будет вставлять/апдейтить элементы в тот внешний контейнер. Это быдлокодерский вариант, но довольно распространённый, т.к. большинство Java-программистов не в курсе о теории категорий (откуда родом map, reduce и т.п.) и не понимают этих концепций. На ревью я такие вещи обычно заворачивал, когда видел, и писал в комментарии пример, как это сделать через collect, т.к. код без побочных эффектов лучше поддаётся анализу, как глазами, так и компилятором и автоматизированными средствами.