Java Stream.collect groupingBy 和聚合类

标签 java lambda group-by

<分区>

这段代码很简单:

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
}

我怎样才能访问 say

myBlogPost.getDescription().getType()

在 lambda 表达式中?

伪代码:

Map<String, List<BlogPost>> postsPerType = posts.stream()
      .collect(groupingBy(BlogPost::getDescription::getType));

编辑: groupingBy指的是:

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

最佳答案

只需创建一个返回该表达式的 lambda:

groupingBy(p -> p.getDescription().getType())

关于Java Stream.collect groupingBy 和聚合类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53092095/

相关文章:

c++ - 为什么不能捕获我的 C++ lambda 函数?

java - 使用 HashMap 统计实例

java - C# Xamarin 中的 RegisterDataSetObserver

encryption - j2me 的充气城堡提供者 jar

java - struts2 Action 中的验证异常

Java 8 流 "ifPresent"

c# - 如何将字符串转换为其等效的 LINQ 表达式树?

python - 按 Numpy 的中位数分组(不含 Pandas)

mongodb - 按天/月分组,并在 mongo 中取该天/月的平均评分

mysql - 如果 id 在 mysql 中相关,则总计值字段