Хотя лучшие ответы уже были опубликованы (flatMap
- ваш друг здесь), я думаю, что здесь стоит указать, что ошибка ввода связана с использованием toArray
без аргумента.
jshell> List<Long> a = Arrays.asList(1L, 2L, 3L, 4L)
a ==> [1, 2, 3, 4]
jshell> a.toArray()
$2 ==> Object[4] { 1, 2, 3, 4 }
Видишь? Когда вы используете toArray
без аргумента, вы получаете результат типа Object[]
. Так что сделайте это вместо:
jshell> a.toArray(new Long[1])
$3 ==> Long[4] { 1, 2, 3, 4 }
Добавляя аргумент new Long[1]
, мы заставляем результат toArray
быть массивом Long, который вы хотите, вместо массива объектов.
См. JavaDoc для `toArray '