Stream API, как получить среднее значение int для объекта в Коллекции?

Класс Employee имеет rоллекцию Reviews. Каждый Review имеет Grade. Как получить cредний grade для Employee, используя Stream API?

@Entity
public class Employee extends AbstractBaseEntity {
    @OneToMany( mappedBy = "employee",  cascade = CascadeType.MERGE, fetch = FetchType.LAZY)
    private List<Review> reviews;
}
@Entity
public class Review extends AbstractBaseEntity {
    private Byte grade;
}

Ответы (1 шт):

Автор решения: kami

Можно воспользоваться функционалом IntStream:

    public class Employee  {
        private List<Review> reviews;

        public double avgGrade(){
            return reviews.stream()
                    .flatMapToInt(review-> IntStream.of(review.grade))
                    .average()
                    .orElse(0);
        }
    }
→ Ссылка