@KarlRichter Другой вопрос не дает вам типизированный список. Кроме того, этот вопрос был задан четыре года назад и имеет ответ более 300 голосов. Почему мы пытаемся объединить это сейчас?
@skiwi Я имею в виду, что все остальные ответы после этого не нужны, так как они были бы не такими естественными.
Дмитрий Гинзбург
1
Спасибо, я еще не видел коробочный метод, и он работал как шарм.
twreid
Дополнение: я думаю, что этот код становится немного короче, яснее и красивее, если вы используете статический импорт toList. Это делается путем размещения следующих среди импорта файла: static import java.util.stream.Collectors.toList;. Тогда вызов вызова читает просто .collect(toList()).
Лий
1
В Eclipse можно заставить IDE добавить статический импорт для методов. Это делается путем добавления Collectorsкласса в Предпочтения -> Java -> Редактор -> Помощник по содержимому -> Избранное . После этого вам нужно всего лишь toLiнажать Ctrl + Space, чтобы заполнить IDE toListи добавить статический импорт.
Лий
2
Я рвал на себе волосы о том, что не так с тем, что я пробовал, спасибо, что указали на эту boxed()часть
K Raphael
16
Вы также можете использовать mapToObj () в потоке, который принимает IntFunction и возвращает объектно-ориентированный поток, состоящий из результатов применения данной функции к элементам этого потока.
Ответы:
IntStream::boxed
IntStream::boxed
превращаетIntStream
вStream<Integer>
, который вы можете затемcollect
вList
:boxed
Метод преобразуетint
примитивные значенияIntStream
в потокInteger
объектов. Слово «бокс» называетint
⬌Integer
процесс преобразования. Смотрите Oracle Tutorial .источник
toList
. Это делается путем размещения следующих среди импорта файла:static import java.util.stream.Collectors.toList;
. Тогда вызов вызова читает просто.collect(toList())
.Collectors
класса в Предпочтения -> Java -> Редактор -> Помощник по содержимому -> Избранное . После этого вам нужно всего лишьtoLi
нажать Ctrl + Space, чтобы заполнить IDEtoList
и добавить статический импорт.boxed()
частьВы также можете использовать mapToObj () в потоке, который принимает IntFunction и возвращает объектно-ориентированный поток, состоящий из результатов применения данной функции к элементам этого потока.
источник
boxed()
делегирует.Вы можете использовать примитивные коллекции, доступные в Eclipse Collections, и избегать бокса.
Примечание: я участвую в коллекциях Eclipse.
источник
MutableIntList list = IntLists.mutable.withAll(IntStream.range(1, 5))
Найдите следующий пример нахождения квадрата каждого элемента int с использованием Java 8:
источник
Вы можете использовать метод сбора:
Фактически, это почти то же самое, что делает Java, когда вы вызываете .collect (Collectors.toList ()) в потоке объекта:
Примечание. Третий параметр необходим, только если вы хотите запустить параллельный сбор; для последовательного сбора достаточно первых двух.
источник