Допустим, у меня есть IntStream
, и я хотел бы получить, например, список элементов из некоторой коллекции things
, индекс которой находится в этом потоке.
Я думал, что это будет так же просто, как
IntStream.range(0, 10).collect(Collectors.toList(
_i -> things[_i]
))
но возникает проблема несовместимых типов (<lambda parameter>
против int). <lambda parameter>
не может быть приведено к Integer. Это удивило меня, потому что похожий метод toMap
, кажется, работает нормально, если я добавлю boxed()
в поток - тогда тип лямбда-параметра будет java.lang.Object вместо <lambda parameter>
:
IntStream.range(0, 10).boxed().collect(Collectors.toMap(
_i -> things[_i], _i -> 1
))
Я использую Java 12.
Как мне добиться подобного поведения в методе toList
, или если то, что я пытаюсь сделать, является плохой идеей - почему и каков будет хороший альтернативный подход?