Как преобразовать массив String в массив int с потоками

Я создаю простой класс, который принимает массив строк и возвращает массив целых чисел с длиной каждой строки в них. Я пытаюсь использовать для этого Java 8 Stream API.

public int[] findMostSimilar(String[] words) {

    return Arrays.stream(words).map(n -> n.length()).toArray();

}

Но в самом потоке появляется ошибка с указанием

incompatible types, required: int[], found: java.lang.Object[].

Есть идеи, как достичь того, что я хочу?

Очень похоже / возможный дубликат: Преобразование потока Java toArray () в массив определенного типа

GBlodgett 16.01.2019 22:26
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
3
1
5 281
2

Ответы 2

Сначала давайте посмотрим, почему ваша попытка не сработала:

Arrays.stream(words).map(n -> n.length()).toArray(); 

Приведенный выше оператор возвращает Object[]. Вы можете использовать .toArray(Integer[]::new);, но тогда это вернет Integer[]


Вместо этого вы можете использовать mapToInt:

int[] array = Arrays.stream(words).mapToInt(String::length).toArray();

Это должно сработать.

int[] ints = Arrays.stream(words).mapToInt(String::length).toArray();

Другие вопросы по теме