Java 8 流 : Map with values from sub field

标签 java java-8 java-stream

我正在尝试创建一个 Map<String, List<Moo>> fooMoos;

来自以下类结构:

class Foo {
    String id;
    Bar bar;
}

class Bar {
    List<Moo> moos;
}

List<Foo> foos;

如果 moos 直接是 Foo 的一个字段,我会这样做

Map<String, List<Moo>> fooMoos = foos.stream().collect(Collectors.toMap(Foo::getId, Foo::getMoos));

但是您如何使用子字段做到这一点?有没有类似 Foo::getBar::getMoos 的东西?

我觉得这里需要一个平面 map ,但不知道该怎么做。

最佳答案

函数引用很有用,但它们不支持链接。你需要使用像这样的 lambda

foo -> foo.bar.moos

foo -> foo.getBar().getMoos()

关于Java 8 流 : Map with values from sub field,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42820915/

相关文章:

java - `gradle run` 没有 gradle

java - 泛型数组创建

java - SQL 连接异常 - 驱动程序无法使用安全套接字层 (SSL) 加密与 SQL Server 建立安全连接

java - 函数式编程如何变得更好 (Java 8)

java - 使用 Java 8 的 Stream API,如何编写一个纯净的过滤函数?

java - Firefox 的 Selenium 自动化在本地工作,但在服务器上失败

java - 将 Java Mail StartTLS 与信任库结合使用

generics - 为什么泛型类型的实例类与泛型类型类不一样?

java - 与数据库无关的数据库加密

java - 如何将流中的所有元素减少到公共(public)字段?