Java Stream.collect groupingBy 和聚合类

这段代码很简单:


Map<String, List<BlogPost>> postsPerType = posts.stream()

  .collect(groupingBy(BlogPost::getType));

BlogPost 在哪里:


class BlogPost {

    String title;

    String author;

    String type;

    int likes;

    // getter setter

}

如果 BlogPost 有一些其他类作为字段,我想按这些字段之一进行分组,例如


class BlogPost {

    String title;

    String author;

    Description description;

    int likes;

    // getter setter

}


class Description {

    String part1;

    String type;

    // getter setter

}

我如何访问说


myBlogPost.getDescription().getType()

在 lambda 表达式中?


伪代码:


Map<String, List<BlogPost>> postsPerType = posts.stream()

      .collect(groupingBy(BlogPost::getDescription::getType));

编辑:groupingBy 指的是:


import static java.util.stream.Collectors.groupingBy;


qq_遁去的一_1
浏览 164回答 2
2回答

慕慕森

只需创建一个返回该表达式的 lambda:groupingBy(p&nbsp;->&nbsp;p.getDescription().getType())

一只斗牛犬

Map<String, List<BlogPost>> postsPerType = posts.stream()&nbsp; .collect(groupingBy(bp -> bp.getDescription().getType()));
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java