Просто выполните потоковую передачу по результирующим записям и объедините их, как вы. sh:
String output = Stream.of("blue", "red", "blue", "yellow")
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()))
.entrySet()
.stream()
//.sorted(Comparator.comparing(Entry::getValue).reversed())
.map(e -> e.getKey() + ";" + e.getValue())
.collect(Collectors.joining("\n"));
Неясно, является ли порядок обязательным, но вы можете раскомментировать строку sorted
, чтобы увеличить считается первым.
Обратите внимание, что это не обрабатывает кавычки, избегая et c. Если вам нужен более сложный CSV logi c, вы, вероятно, захотите использовать библиотеку.