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);
}
}