我有一个播放器对象的数组列表。这些球员都得分很高。我不确定如何遍历数组列表并找到得分最高的玩家。 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());
        }

    }

最佳答案

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<Player>。然后要找到得分最高的得分手,您只需调用Collections.max(playerList);(无需提供Comparator)。

07-26 06:23