Сравнение элементов на карте со списком в качестве значения ⇐ JAVA

Программисты JAVA общаются здесь
Anonymous
Сравнение элементов на карте со списком в качестве значения

Сообщение Anonymous »

Я пытаюсь выполнить несколько упражнений, но не хочу использовать оператор if, потому что программа будет слишком длинной. У меня есть список людей, где:

Код: Выделить всё

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Person {
private String name;
private Integer score;
private Group team;
private boolean active;
}
и

Код: Выделить всё

public enum Group {
G1, G2, G3
}
Моя задача — найти группу, в которой человек имеет наивысший балл, но если баллы в двух группах одинаковы, мне нужно вернуть группу, в которой больше неактивных людей. Если количество игроков inActive одинаковое, не имеет значения, какую группу я возвращаю.
Я группирую все на карте

Код: Выделить всё

Map collect = people.stream()
.collect(Collectors.groupingBy(Person::getTeam));
а затем создаю две другие карты, на которых группирую оценки и неактивных людей.

Код: Выделить всё

for (Map.Entry entry : collect.entrySet()) {
collect1.put(entry
.getKey(), entry.getValue().stream()
.mapToInt(Person::getScore).sum());
collect2.put(entry.getKey(), entry.getValue().stream()
.filter(p -> !p.isActive())
.count());
}
Как мне теперь сравнить, чтобы получить результат, как в задаче.


Подробнее здесь: https://stackoverflow.com/questions/699 ... as-a-value

Вернуться в «JAVA»