Как отметил JB Nizet, код, похоже, сбивает с толку идентификаторы постов и комментариев:
Stream<E> ofAtLeastComments(Stream<E> comments, Stream<Post> posts, Integer count) {
Map<Integer, List<Post>> posts = posts.collect(Collectors.groupingBy(Post::getId));
return comments.filter(comment -> posts.get(comment.getPostId()).size() >= count);
// ^^^^
}
Но название метода звучит так, как вы хотите:
<E extends Comment> Stream<Post> ofAtLeastComments(Stream<E> comments, Stream<Post> posts, Integer count) {
// Number of comments per post ID
Map<Integer, Long> commentCounts = comments
.collect(Collectors.groupingBy(Comment::getPostId, Collectors.counting()));
return posts.filter(post -> commentCounts.getOrDefault(post.getId(), 0L) >= count);
}