2013-09-23 58 views
2

我有兩個數組,一個是String [],另一個是int []。整型數組中的值對應於String數組的元素。 例如,String數組包含一些團隊的名稱,另一個int數組包含他們在聯盟中的點數。 我可以使用Arrays.sort對int數組進行排序,並且我想根據點對字符串數組進行排序,如果兩個球隊有相同的點,我應該按字母順序排列它們。鏈接兩個數組並將它們排序在一起

我可以做一個二維數組,但如何排序呢?

+0

您需要一個名爲'Team'的'name'和'point'作爲屬性。互聯網上有很多這樣的例子,以及SO本身。請搜索它。 –

+0

這取決於域。如果團隊存在於這些結果之外,那麼您需要一個「團隊」類和「TeamResults」類。 –

+0

您可以改爲使用地圖並按照此處所述進行排序:http://stackoverflow.com/questions/109383/how-to-sort-a-mapkey-value-on-the-values-in-java – Aliza

回答

4

考慮創建的類:

class Team { 
    String name; 
    int numPoints; 
} 

和具有陣列Team[] teams。然後可以爲這些對象創建一個比較器,這些對象基於StringInteger條件進行排序。

1

如果您創建了一個包含團隊兩個值的類,並且該類實現了Comparable接口,那麼您會很容易做到這一點。然後使用Arrays.sort排序這些對象的數組並不重要。

0

創建類和添加兩個比較:

class Team{ 
    private String teamName; 
    private int leaguePoints; 
    public static final Comparator<Team> BY_NAME = new ByName(); 
    public static final Comparator<Team> BY_POINTS = new ByPoints(); 
    private static class ByName implements Comparator<Team> 
    { 
     public int compare(Team a, Team b) 
     return a.name.compareTo(b.name); 
    } 
    private static class ByPoints implements Comparator<Team> 
    { 
     public int compare(Team a, Team b) 
     return a.leaguePoints - b.leaguePoints; 
    } 
} 

然後對數組進行排序對於這個類,第一和然後使用BY_NAME比較器通過BY_POINTS

Arrays.sort(array, Team.BY_NAME); 
Arrays.sort(array, Team.BY_POINTS); 

確保使用穩定的排序保持相等鍵的相對順序(也就是說,如果點相等,則不穩定有點像選擇排序威力搞亂球隊的名字的排序順序)。

相關問題