Скажем, что я хочу удалить все не-буквы из моего String
.
String s = "abc-de3-2fg";
Я могу использовать IntStream
для этого:
s.stream().filter(ch -> Character.isLetter(ch)). // But then what?
Что я могу сделать, чтобы преобразовать этот поток в экземпляр String
?
В другой заметке, почему я не могу рассматривать String
как поток объектов типа Character
?
String s = "abc-de3-2fg";
// Yields a Stream of char[], therefore doesn't compile
Stream<Character> stream = Stream.of(s.toCharArray());
// Yields a stream with one member - s, which is a String object. Doesn't compile
Stream<Character> stream = Stream.of(s);
Согласно javadoc, подпись создания Stream
выглядит следующим образом:
Поток (значения T...)
Единственный (паршивый) способ, о котором я мог думать, это:
String s = "abc-de3-2fg";
Stream<Character> stream = Stream.of(s.charAt(0), s.charAt(1), s.charAt(2), ...)
И, конечно, это не достаточно хорошо... Что мне не хватает?