假设我有一个IntStream
,我想得到例如来自某个集合things
的项目列表,其索引在该流中。
我以为会很简单
IntStream.range(0, 10).collect(Collectors.toList(
_i -> things[_i]
))
但是出现类型不兼容的问题(<lambda parameter>
与int)。<lambda parameter>
无法转换为整数。这让我感到惊讶,因为类似的方法toMap
似乎可以正常工作,如果我将boxed()
添加到流中,那么lambda参数的类型是java.lang.Object而不是<lambda parameter>
:
IntStream.range(0, 10).boxed().collect(Collectors.toMap(
_i -> things[_i], _i -> 1
))
我正在使用Java 12。
如何在toList
方法中实现类似的行为,或者如果我尝试的是一个坏主意-为什么,什么是一个好的替代方法?
[这让我感到惊讶,因为类似的方法
toMap
似乎可以正常工作
您可以使用mapToObj
以与地图nu相同的方式进行制作
List<Thing> collect = IntStream.range(0, 10)
.mapToObj(_i -> things[_i])
.collect(Collectors.toList());
1)我想得到例如来自某些集合事物的项目列表,这些事物的索引在该流中
对于第一个问题,您必须使用mapToObj中间运算。
List<ObjectType> res = IntStream.range(0, 10)
.mapToObj(i-> things.get(i))
.collect(Collectors.toList());