Я создаю простой класс, который принимает массив строк и возвращает массив целых чисел с длиной каждой строки в них. Я пытаюсь использовать для этого 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[].
Есть идеи, как достичь того, что я хочу?




Сначала давайте посмотрим, почему ваша попытка не сработала:
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();
Очень похоже / возможный дубликат: Преобразование потока Java toArray () в массив определенного типа