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

这是一种很不雅观的方式来完成我想要完成的事情。很好奇什么是更好的方法

暴奕
2023-03-14

基本上,它想要完成的就是找到胜率最多的球队。这是通过对每个球员的制胜球进行合计,并根据他们来自哪一支球队来判断,为该队计数来发现的。

我通过遍历所有玩家并找到唯一的队名来创建作为队对象的队列表来实现这一点。

然后我查了一下球员名单,如果球员所在的球队和现在的球队一样,就会为他们的制胜球加分。

一个小任务总共有四个for循环。看起来很恶心。

    /**
     * Returns the team with the most wins
     */
    public Team getTeamWithMostWins() {
        Team teamWithMostWins = new Team();
        List<Team> teams = new List<Team>();

        if (!players.isEmpty()) {

            // Compile the List of teams
            for (int i = 0; i < players.size(); i++) {
                if (!teams.contains(players.get(i).getTeam())) {
                    teams.add(new Team(players.get(i).getTeam()));
                }
            }

            // Set the wins for the teams
            for (int i = 0; i < players.size(); i++) {
                String team = players.get(i).getTeam();
                int winningGoals = players.get(i).getWinningGoals();

                // Go through the teams List to set the points
                for (int j = 0; j < teams.size(); j++) {
                    // If the current player's team is equal to the current team in the loop
                    if ((teams.get(j).getName()).equals(team)) {
                        teams.get(j).incrementWinsBy(winningGoals);
                    }
                }
            }

            int mostWins = teams.get(0).getWins();

            // Find the team with the most wins
            for (int i = 1; i < teams.size(); i++) {
                if (teams.get(i).getWins() > mostWins) {
                    teamWithMostWins = teams.get(i);
                }
            }

        }
        else {
            teamWithMostWins = null;
        }

        return teamWithMostWins;
    }

共有1个答案

高慈
2023-03-14

正如Jordan Denison在评论中指出的,您可以使用for-each循环。参见下面的示例。

此外,目前你将只得到最后一个队比第一个队有更多的胜利。为了得到拥有最多胜利的队伍,您必须更新最多胜利:

int mostWins = teams.get(0).getWins();

// Find the team with the most wins
for(Team team : teams) {
    if (team.getWins() > mostWins) {
        teamWithMostWins = team;
        mostWins = team.getWins(); // <--- Update the most wins every time you find a team with more wins
    }
}

此外,考虑使用其他答案中所示的地图。

 类似资料:
  • 我通常让Eclipse为我生成hashCode()方法,但是现在我发现有迹象表明生成的哈希代码可能不是很好。 在哈希集中使用由Eclipse生成的hash code()方法返回的哈希代码会导致查找速度比使用手工编码的hashCode()方法慢6倍。 这是我的测试: 具有三个int字段的类。 hashCode()和equals()方法已由Eclipse生成。 用1.000.000个类实例填充Hash

  • 目前,要用CompletionStage的集合做一些简单的事情,需要跨越几道丑陋的关卡: 我想写的是: 关于完成未来并转换为数组和连接的整个仪式都是样板文件,分散了对实际代码语义的注意力。 可能有一个版本的allOf()返回< code>Future 我可以自己尝试实现XXXUtil,但我想知道是否已经有一个成熟的3rdparty库来解决这个问题和类似的问题(例如Spotify的Completab

  • 问题内容: 顾名思义,我正在使用python编写的网站上,它对urllib2模块进行了多次调用以读取网站。然后,我用BeautifulSoup解析它们。 由于我必须阅读5-10个站点,因此页面需要一段时间才能加载。 我只是想知道是否可以同时阅读所有站点?还是任何使它更快的技巧,例如我应该在每次读取后关闭urllib2.urlopen还是将其保持打开状态? 补充 :另外,如果我只是改用php,从其他

  • 问题内容: 我使用的代码如下所示。但是关于我应该等待所有可运行对象完成的方式,我发现了两种方法,我不知道它们之间的区别,哪种是最佳实践?它们如下: 代码 : 等待所有可运行对象完成的第一种方法 : 等待所有可运行对象完成的第二种方法 : 请让我知道推荐哪个。 问题答案: 仅当执行程序(growSeedExecutor)仅用于给定任务时,这两种方法才等效。第一种方法可能导致以下情况:另一个任务需要并

  • 我是一个大口新手,实际上一切都很好,但不是萨斯编译器,像…根本不起作用。 下面是我的github repo(没有node_modules),但我希望所有内容都在gulpfile.js和package.json中;https://github.com/danielklys7/Portfolio 我尝试了几乎所有的东西,主要是在scss但是我把它改成了我最近工作的sass。 我希望我的gulp配置能正

  • 问题内容: 我已阅读以下讨论: 如果私有帮助器方法可以是静态的,则它们应该是静态的;如果它们的类没有成员变量,则所有方法应该是静态的。 似乎人们通常会接受静态方法,但由于以下两个原因,对此有些怀疑: 他们很难测试。 他们违反了OO原则。(一个人说,它们是函数,而不是方法。) 最可接受的静态方法是 私有静态 方法。但是,为什么为什么根本不存在静态方法呢?在什么情况下,它们是最优先采用的方法? 问题答