【问题标题】:Java sort array list to find highest IntegerJava排序数组列表以查找最高整数
【发布时间】:2014-03-11 11:55:31
【问题描述】:

我有一个播放器对象的数组列表。这些球员都有高分。我不确定如何通过数组列表找到得分最高的玩家。 Collections.sort 不适用于此

public void determineWinner() {

        for (int i = 0; i < playersList.size(); i++) {
             playersList.get(i).getFrameScores2();
             System.out.println("**************");
             System.out.println("Player " + playersList.get(i).getName() + " total score is : " + playersList.get(i).getTotalScore());
        }

    }

【问题讨论】:

  • 实现任意一个 Comparator/Comparable 接口对数组进行排序,然后简单地访问最后一个索引以获得最高分
  • 排序是额外的工作,为什么不只是遍历你的列表,保留之前得分最高的玩家并将当前玩家与当前玩家进行比较?

标签: java arraylist integer compare


【解决方案1】:

Collections.max() 与适当的Comparator 一起使用

Player topScorer = Collections.max(playerList, new Comparator<Player>() {
    public int compare(Player p1, Player p2) {
        return Integer.compare(p1.getTotalScore(), p2.getTotalScore());
    }
});

如果Player 对象使用getTotalScore() 属性自然地对自己进行排序,请考虑使用与上述类似的代码使Player 实现Comparable&lt;Player&gt;。然后要找到最高得分者,您只需调用Collections.max(playerList);(无需提供Comparator)。

【讨论】:

  • 谢谢,真的很有效率。解决了
猜你喜欢
  • 2012-11-17
  • 2018-01-14
  • 1970-01-01
  • 2022-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多