2016-09-16 267 views
1
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的原因是因爲我不知道有多少獲勝者。如何比較ArrayList元素

我知道我必須使用if語句來比較元素。但我不知道如何開始比較它們。如果 - 語句,我如何獲取它們的每個值並將其存儲在 中。爲了簡單起見,可以說元素的數量是3,否則它是未知的。

回答

0

問題是如果你想要一個好的表現或不。如果沒有,那麼你可以只那種ArrayList使用sort方法和自定義Comparator那會是比較點,試試這個在您的方法beggining:

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

在此之後,遊戲玩家/玩家(我不知道真正理解你的命名)得分最高的將會是名單的最後,如果只有一個最高分,那麼他將成爲最後一名。然後,你只需要從列表中提取最後一個,並檢查前一個是否具有相同的分數,如果不是那麼停止,如果是的話,那麼也加上他,並檢查以前的他等。

另外,你的points列表在您的代碼中不是必需的,如果您不打算對它執行任何操作,請記住刪除它。