У меня есть поток строк:
Stream<String> stream = ...;
Я хочу создать строку, используя
stream.collect(Collectors.joining(',', '[', ']'))
только хочувернуть «Нет строк», если поток не содержит никаких элементов.
Я заметил, что метод String java.util.stream.Stream.collect(Collector<? super String, ?, String> collector)
принимает аргумент типа java.util.stream.Collector
Для моего проекта IМне нужна эта функциональность во многих местах, поэтому мне нужен класс, реализующий интерфейс Collector
.
Я знаю, что это можно сделать с помощью Stream to a List, а затем проверить List.size () == 0?и затем преобразуйте список в поток снова, если это необходимо.
List<String> list = stream.collect(Collectors.toList());
if (list.size() == 0) {
return "No Strings";
}
return list.stream().collect(Collectors.joining(',', '[', ']'));`
Это то, что я хотел бы, чтобы это произошло
List emptyList = new ArrayList<String>;
System.out.println(emptyList.steam().collect(Collectors.joining(',', '[', ']')));
Вывод
[,]
Вывод Я бы хотел
No Strings