Как суммировать, используя stream () по переменной определенного типа - PullRequest
0 голосов
/ 18 января 2019

Я пытаюсь суммировать все очки одной команды и вернуть список строк (team: totalPoints)

public class Player {
    String name;
    int team;
    int points;
}

List <Player> player= new ArrayList<>();
player.add(new Player("Michael",1,10)); 
player.add(new Player("Mike",2,15));
player.add(new Player("Tom",1,7));  
player.add(new Player("Marty",2,9));

Я хотел получить List<String>, с: "1 : 17" , "2 : 24"

1 Ответ

0 голосов
/ 18 января 2019

Вы можете использовать Collectors.groupingBy с нижестоящим Collectors.summingInt как:

List<String> result = player.stream()
        .collect(Collectors.groupingBy(Player::getTeam,
                Collectors.summingInt(Player::getPoints)))
        .entrySet().stream()
        .map(e -> e.getKey() + " : " + e.getValue())
        .collect(Collectors.toList());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...