当前位置: 首页 > 知识库问答 >
问题:

从嵌套列表中获取最大值并使用stream转换为一个列表

柳深
2023-03-14
 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;
        }
    }
 public  List<Player> getTopPlayersFromEachTeam(List<Team> league) {
        // implementation
    }
league.stream().map(Team::getPlayers).collect(Collectors.toList())

共有1个答案

孔乐邦
2023-03-14

code>Team类可以具有BestPlayer方法

public Player bestPlayer() {
    return players.stream().max(Comparator.comparing(Player::getScore)).orElseThrow();
}

联赛中,每支球队都很容易选出最佳球员:

public List<Player> getTopPlayersFromEachTeam() {
    return this.teams.stream().map(Team::bestPlayer).collect(Collectors.toList());
}

或一体机

public List<Player> getTopPlayersFromEachTeam() {
    return this.teams.stream()
            .map(t -> t.getPlayers().stream().max(Comparator.comparing(Player::getScore)).orElseThrow())
            .collect(Collectors.toList());
}

code>.orelsethrow()代码只是表示如果找不到max球员,例如一个的球员列表为空

League l = new League(Arrays.asList(
        new Team(Arrays.asList(new Player(1), new Player(2), new Player(3))),
        new Team(Arrays.asList(new Player(10), new Player(20), new Player(30))),
        new Team(Arrays.asList(new Player(100), new Player(200), new Player(300)))
));

System.out.println(l.getTopPlayersFromEachTeam()); // [Player{score=3}, Player{score=30}, Player{score=300}]
 类似资料:
  • 现在,我希望获得和值最小的属性,以及其他和值最大的列表。 我知道减少... 但是是否可以用最小的获得和最大的获得? 如何获得这些列表?

  • 鉴于 我有一个对象列表。 看起来像 我想将此转换为 i、 e.将个人类别整理成类别列表。 这是实现我想要的当前代码。 有什么方法可以使用流来做到这一点吗 这个问题在本质上类似于Group by和sum对象,比如SQLJavalambdas?但对我没有帮助,因为这里完成了聚合,而这里不是聚合。

  • 问题内容: 因此,我有一个包含几个列表的列表,这些列表都首先包含三个字符串,然后是一个浮点数,例如: 如何制作一个返回最大值的函数(此处为9.1931)?我试过了 但这只是给我一个清单。 编辑:此外,以任何方式我可以获取值来自何处的索引?喜欢,来自哪个子列表? 问题答案: 循环浏览外部列表,然后选择每个子列表的最后一个元素: 最好将所有与函数相关的变量保留在范围内(将列表作为参数传递,并且不要通过

  • 问题内容: 我该如何打开一个列表,例如: 进入列表列表,例如: 即我想将有序元素分组在列表中,并将其保留在有序列表中。我怎样才能做到这一点? 谢谢 问题答案: 假设data_list的长度是三的倍数

  • 我是Java8新手,需要重写一段旧代码来实现一个新的alghoritm。任务是过滤每个列表具有最大速度的对象。列表嵌套在地图中:道路的根地图,其中包含道路段的地图,每个道路段的地图包含对象列表,每个对象以时间间隔降低测量的速度。我需要找到每个列表的所有最大速度。 我发现以下链接看起来像我的问题,但我不能适应他们,我不确定我的尝试解决我的问题正确。 如何使用Java8流和过滤器过滤嵌套循环? Jav

  • 使用map从两个字符串列表中获取对象列表时,我有点困惑。 让我们举个例子:列表1: 清单2: 名称的数据类如下 现在我想要一个列表,它是name和lastName的组合,我们使用name索引来获取lastName。 作为输出的名称列表如下: 请求使用rx kotlin函数。通过使用集合很容易解决。