@n199a
Java

Как использовать Matcher в Stream в Java 8?

Имеется объект типа String, который содержит в себе числа. Как при получении потока использовать результаты Matcher для того, чтобы из объекта типа String создать массив чисел примитивного типа int[] используя Java 8?

Вот что я набросал.
String source = "-1, 2, 3, -5, 999,   5";

source.codePoints()
                .filter(matcher.group())
                .map(Integer::parseInt)
                .toArray(int[]::new);


Вот ещё способ, но нужно как-то привести значения к типу int:
int[] numbers = pattern.splitAsStream(source).toArray(s -> Integer.parseInt(s));
  • Вопрос задан
  • 216 просмотров
Решения вопроса 1
xez
@xez Куратор тега Java
TL Junior Roo
Matcher умеет сам генерировать стрим:
// Java9+        
        var integers = Pattern.compile("-?\\d+").matcher(source)
                .results()  // Stream<MatchResult>
                .map(MatchResult::group) // Stream<String>
                .map(Integer::valueOf)
                .toArray(Integer[]::new);

// Java8
        Integer[] integersJ8 = Pattern.compile(",")
                .splitAsStream(source)
                .map(String::trim)
                .map(Integer::valueOf)
                .toArray(Integer[]::new);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы