Создать поток <Character>из потока <String> - PullRequest
0 голосов
/ 24 мая 2018

Я пытаюсь преобразовать поток строки в поток символа.пример:

Stream<String> -> "Hello", "World"

Stream<Char> -> "H","e","l","l","o","W","o","r","l","d"

Я уже пытался перейти на Stream<Character> temp = stream.forEachOrdered(s -> s.chars()) и, возможно, отобразить их в поток Char, но я не могу понять это ..

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

В Java 9+ класс String имеет новый метод chars (), который возвращает IntStream.Оттуда вы можете использовать Character.valueOf.

В Java 8 это более сложно.Вы можете получить массив символов с помощью String.toCharArray, но затем вам нужно конвертировать char[] в Character[] перед использованием Arrays.stream(T[]).Однако, насколько мне известно, нет встроенного способа конвертировать из char[] в Character[] без использования библиотеки или написания собственного метода преобразования.

0 голосов
/ 24 мая 2018

Из ответа здесь :

Stream<String> foo = ...
Stream<Character> characters = foo.flatMap(x -> x.chars().mapToObj(i -> (char) i));

или

Stream<Character> characters = foo.flatMapToInt(CharSequence::chars)
    .mapToObj(i -> (char) i);

Просто используйте flatMap или flatMapToInt.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...