Java 8 Streams:使用映射值列出要映射的列表

时间:2017-03-31 19:42:10

标签: java-stream

我尝试使用-autorelease[[x autorelease] retain]创建Map

List应该是原始项目的名称,

Stream应该是一些派生数据。

key之后,该流由value组成,在.map()时,我无法访问" foo"来自之前的Integer。如何获取.collect()中的原始项目?

可以使用lambda来完成,还是需要.toMap()

(下面的代码仅用于演示,真正的代码当然要复杂得多,我不能Stream .forEach()的方法。

doSomething()

1 个答案:

答案 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,则会中断(抛出异常)。