如何比较ArrayList元素

时间:2016-09-16 02:42:11

标签: if-statement for-loop arraylist

private static ArrayList<Game> theWinnerIs(ArrayList<Game> gamer){
    ArrayList<Game> winner = new ArrayList<Game>();
    ArrayList<Integer> points = new ArrayList<Integer>();
    for(int i = 0; i<gamer.size(); i=i+1){
        int x = gamer.get(i).getPoints();
        winner.add(x);
    }

    return winner;
}

我在ArrayList游戏玩家中拥有未知数量的元素。 我想要做的是,我想循环遍历ArrayList游戏玩家中的每个元素,并在他们的每一个上调用一个名为getpoints();的方法,以获得他们的分数。然后我想比较这些元素中的每一个的得分,并在获胜者ArrayList中存储得分最多的元素,然后 回报获胜者。如果2个或更多元素共享得分最多,我想将它们存储在获胜者Arraylist中。因此我使用Arraylist的原因,因为我不知道有多少赢家。

我知道我必须使用if语句来比较元素。但我不知道如何开始比较它们。我如何获得他们的每个价值并存储它们 如果 - 陈述。为简单起见,我们可以说元素的数量为3.否则为未知。

1 个答案:

答案 0 :(得分:0)

问题是,如果你想要一个好的表现。如果没有,那么您可以使用ArrayList方法对sort进行排序,并使用自定义Comparator来比较这些点,请在方法开始时尝试:

gamer.sort((p1, p2) -> p1.getPoints().compareTo(p2.getPoints()));

在此之后,具有最高分数的玩家/玩家(我真的不明白你的命名)会在列表的最后,如果只有一个最高分,那么他将是最后一个。然后你只需要从列表中提取最后一个,并检查前一个是否具有相同的分数,如果没有则停止,如果是,则添加他,并检查他之前的等等。

此外,您的代码中不需要points列表,如果您没有计划对其执行任何操作,请务必将其删除。