我尝试使用-autorelease
从[[x autorelease] retain]
创建Map
。
List
应该是原始项目的名称,
Stream
应该是一些派生数据。
在key
之后,该流由value
组成,在.map()
时,我无法访问" foo"来自之前的Integer
。如何获取.collect()
中的原始项目?
可以使用lambda
来完成,还是需要.toMap()
?
(下面的代码仅用于演示,真正的代码当然要复杂得多,我不能Stream
.forEach()
的方法。
doSomething()
答案 0 :(得分:6)
在我看来它并不复杂。我错过了什么吗?
return Stream.of(new Foo())
.collect(Collectors.toMap(Foo::getName, this::doSomething));
我更喜欢方法参考。如果您更喜欢->
表示法,请使用
return Stream.of(new Foo())
.collect(Collectors.toMap(foo -> foo.getName(), foo -> doSomething(foo)));
如果您的信息流中有多个具有相同名称的Foo
,则会中断(抛出异常)。