Преобразование строки в набор <Character>с использованием потока Java 8 - PullRequest
0 голосов
/ 31 января 2019
private static final String ALPHABET = "abcdefghijklmnopqrstuvwxyz";
SortedSet<Character> set= new TreeSet<Character>();
for (int i = 0; i < ALPHABET.length(); i++) {
    set.add(new Character(ALPHABET.charAt(i)));
 }

Я хотел бы преобразовать это для цикла в Java 8 способом.Это может быть лучше, если использовать поток.Выводом будет объект «set» с символом.

Ответы [ 3 ]

0 голосов
/ 31 января 2019

String имеет метод, который даст вам поток символов.На самом деле это IntStream, поэтому нам просто нужно преобразовать их в Character с, а затем collect в набор.

"foo".chars()
    .mapToObj(chr -> (char) chr) // autoboxed to Character
    .collect(Collectors.toSet());

или использовать TreeSet::new как другие имеют показано , если вам нужно отсортировать набор.

0 голосов
/ 31 января 2019

Я думаю, что это самый простой способ - сохранить требование использования TreeSet.Обратите внимание, что нет необходимости перебирать входную строку, используя indexes , вы можете напрямую перебирать ее символы.

SortedSet<Character> set =
    ALPHABET.chars()
            .mapToObj(c -> (char) c)
            .collect(Collectors.toCollection(TreeSet::new));
0 голосов
/ 31 января 2019
 IntStream.range(0, ALPHABET.length())
          .mapToObj(ALPHABET::charAt)
          .collect(Collectors.toCollection(TreeSet::new));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...