有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java从嵌套列表中获取最大值,并使用流将其转换为一个列表

联盟有20个场地,球队有11个场地,球员有场地

 class Player {
        private int score;

        public int getScore() {
            return score;
        }
    }

    class Team {
        private List<Player> players;

        public List<Player> getPlayers() {
            return players;
        }
    }

    class League {
        private List<Team> teams;

        public List<Team> getTeams() {
            return teams;
        }
    }

需要从List<Team>最好的Player和最高的score中进行选择,并返回一个List<Player>,其中包括使用Stream从每个队中选出一名最好的球员

 public  List<Player> getTopPlayersFromEachTeam(List<Team> league) {
        // implementation
    }

被困在:

league.stream().map(Team::getPlayers).collect(Collectors.toList())

有什么提示吗


共 (1) 个答案

  1. # 1 楼答案

    你可以做:

    League league = new League(Arrays.asList(
            new Team(Arrays.asList(new Player(8), new Player(11))),
            new Team(Arrays.asList(new Player(15), new Player(12))),
            new Team(Arrays.asList(new Player(6), new Player(2), new Player(7)))
    ));
    
    List<Player> bestPlayersInEachTeam = league.getTeams().stream()
            .map(team -> team.getPlayers().stream()        // Best from each team
                    .max(Comparator.comparing(Player::getScore))
                    .get())
            .collect(Collectors.toList());
    
    System.out.println(bestPlayersInEachTeam);
    

    输出:

    [Player(score=11), Player(score=15), Player(score=7)]