【问题标题】:How to compare ArrayList elements如何比较 ArrayList 元素
【发布时间】:2017-01-24 04:24:06
【问题描述】:
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 语句来比较元素。但我不知道如何开始比较它们。我如何获取它们的每个值并将其存储在 if - 语句。为简单起见,假设元素数为 3。否则未知。

【问题讨论】:

    标签: if-statement for-loop arraylist


    【解决方案1】:

    问题是你是否想要一个好的表现。如果没有,那么您可以使用sort 方法和自定义ComparatorArrayList 进行排序,这将比较分数,在您的方法开始时试试这个:

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

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

    此外,您的代码中不需要您的 points 列表,如果您不打算对它做任何事情,请记住将其删除。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多