Я пытаюсь подсчитать, сколько раз Int встречается в поле в списке объектов.
Это код, который у меня есть
TreeMap<Integer, Double> ratings = new TreeMap();
ArrayList<Establishment> establishments = new ArrayList<>();
double one = 0;
double two = 0;
double three = 0;
double five = 0;
for (Establishment e : establishments) {
if (e.getRating() == 1) {
one++;
}
if (e.getRating() == 2) {
two++;
}
if (e.getRating() == 3) {
three++;
}
if (e.getRating() == 5) {
five++;
}
}
ratings.put(1, (one / establishments.size()) * 100);
ratings.put(2, (two / establishments.size()) * 100);
ratings.put(3, (three / establishments.size()) * 100);
ratings.put(5, (five / establishments.size()) * 100);
все же это не идеально, если добавить больше оценок (скажем, 20+), то у вас будет куча двойников, и это не будет обслуживаться.
Я знаю, что мог бы что-то сделать с Stream, если бы у меня был список целых, скажем,
listOfInts.stream().filter(i -> i == 3).count()
пока это список объектов, которые содержат int, и мне нужно вычислить количество оценок == X в этом списке объектов.
так псевдокод для чего мне нужно:
Establishemnts.getAllRatings (). Stream (). Filter (рейтинги -> рейтинги ==
3) .count () *
* Повторение для каждого из типов рейтинга 1 - 5
** Нет getAllRatings - думаю, это проблема, которую я пытаюсь решить)