Рубрики
Без рубрики

Преобразование строки в поток символов

Узнайте, как преобразовать строку в поток одиночных символов.

Автор оригинала: baeldung.

1. Обзор

Java 8 представила API Stream с функциональными операциями для обработки последовательностей. Если вы хотите узнать об этом больше, взгляните на эту статью.

В этой краткой статье мы рассмотрим, как преобразовать Строку в Поток из отдельных символов.

2. Преобразование С Использованием символов()

API String имеет новый метод – chars() – с помощью которого мы можем получить экземпляр S tream из объекта String . Этот простой API возвращает экземпляр Int Stream из ввода String .

Проще говоря, IntStream содержит целочисленное представление символов из объекта String :

String testString = "String";
IntStream intStream = testString.chars();

Можно работать с целочисленным представлением символов, не преобразуя их в эквивалент Character . Это может привести к некоторому незначительному повышению производительности, так как не будет необходимости помещать каждое целое число в объект Character .

Однако, если мы хотим отобразить символы для чтения, нам нужно преобразовать целые числа в удобную для человека форму Character :

Stream characterStream = testString.chars()
  .mapToObj(c -> (char) c);

3. Преобразование С Использованием Кодовых точек()

В качестве альтернативы мы можем использовать метод code Points() для получения экземпляра IntStream из строки . Преимущество использования этого API заключается в том, что дополнительные символы Юникода могут быть эффективно обработаны.

Дополнительные символы представлены суррогатными парами Юникода и будут объединены в одну кодовую точку. Таким образом, мы можем правильно обрабатывать (и отображать) любой символ Юникода:

IntStream intStream1 = testString.codePoints();

Нам нужно сопоставить возвращенный IntStream с Stream , чтобы отобразить его для пользователей:

Stream characterStream2 
  = testString.codePoints().mapToObj(c -> (char) c);

4. Преобразование в поток односимвольных строк

До сих пор нам удавалось получить Поток символов; что, если вместо этого нам нужен Поток одного символа строки s?

Как указано ранее в статье, мы будем использовать методы code Points() или charts() для получения экземпляра IntStream , который теперь можно сопоставить с Stream .

Процесс сопоставления включает в себя сначала преобразование целочисленных значений в их соответствующие символьные эквиваленты.

Тогда мы можем использовать String.valueOf() или Символ.toString() для преобразования символов в Строку объект:

Stream stringStream = testString.codePoints()
  .mapToObj(c -> String.valueOf((char) c));

5. Заключение

В этом кратком руководстве мы научимся получать поток Символов из объекта String , вызывая методы code Points() или chars () .

Это позволяет нам в полной мере использовать API Stream для удобного и эффективного управления символами.

Как всегда, фрагменты кода можно найти на GitHub .