首页 > 解决方案 > 如何通过某种类型的变量使用流()求和

问题描述

我正在尝试将同一团队的所有积分相加并返回一个字符串列表(团队: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"

标签: javajava-stream

解决方案


您可以使用,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());

推荐阅读