输出最高分

我有以下带有分数的团队列表:

List<String> teams = Arrays.asList("Dortmund 8", "Bayern 10", "Madrid 9", "Bayern 2", "Dortmund 4");

我需要输出得分最高的团队。如果分数相同,则输出最先获得的团队。在我的例子中,多特蒙德和拜仁的得分相同,但拜仁获得了第一。所以输出是拜仁。这是我现在所拥有的:

    Map<String, Integer> map = new HashMap<>();
    for (String s : teams) {
        String[] rec = s.split(" ");
        int val = Integer.parseInt(rec[1]);
        map.put(rec[0], map.get(rec[0])==null ? val : map.get(rec[0]) + val);
    }
    System.out.println(map);

该代码只是将每个团队的分数相加并将其保存在地图上。我无法改变我需要的方式。

回答

int max = 0;
String bestTeam="";

Map<String, Integer> map = new HashMap<>();
for (String s : teams) 
{
    String[] rec = s.split(" ");
    int val = Integer.parseInt(rec[1]);
    int sum = map.get(rec[0])==null ? val : map.get(rec[0]) + val;
    map.put(rec[0], sum);
    if (sum>max) {
        max = sum;
        bestTeam = rec[0];
    }  
}

System.out.println("Max score winner team :" + bestTeam + "-["+max+"] goals");
  • 其他方法只是选择了最大条目。亚历克斯·鲁登科Alex Rudenko)尼古拉斯·查拉兰比迪斯Nikolas Charalambidis)在此处撰写的流方法流应该如何处理这种情况的完美例子。与此相关的是使用地图,该地图仅用于保存每支球队的总进球数。排序在数组列表迭代中是隐式的。哈希图从未参与任何类型的排序。

    Dortmund 11", "Bayern 10", "Madrid 9", "Bayern 2", "Bayern 4"

    这份名单的获胜者 不是多特蒙德,而是拜仁

  • 在添加所有条目后,最好的团队是得分最多的团队。如果两支球队拥有相同的最高分数,则获胜者是最先达到该最高分数的球队。

    Dortmund 15", "Bayern 2", "Dortmund 4", "Bayern 20", "Dortmund 3"

    两支球队的最高得分相同:22。获胜者是 拜仁,因为它首先达到了最高得分。

  • 逻辑就像将当前最大分数与当前总和进行比较一样简单。条件是sum>max并且不能sum>=max保证达到该最大值的第一支球队是赢家。


测试,工作:

Max score winner team :Bayern-[12]


以上是输出最高分的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>