我有兩個數組,一個是String [],另一個是int []。整型數組中的值對應於String數組的元素。 例如,String數組包含一些團隊的名稱,另一個int數組包含他們在聯盟中的點數。 我可以使用Arrays.sort對int數組進行排序,並且我想根據點對字符串數組進行排序,如果兩個球隊有相同的點,我應該按字母順序排列它們。鏈接兩個數組並將它們排序在一起
我可以做一個二維數組,但如何排序呢?
我有兩個數組,一個是String [],另一個是int []。整型數組中的值對應於String數組的元素。 例如,String數組包含一些團隊的名稱,另一個int數組包含他們在聯盟中的點數。 我可以使用Arrays.sort對int數組進行排序,並且我想根據點對字符串數組進行排序,如果兩個球隊有相同的點,我應該按字母順序排列它們。鏈接兩個數組並將它們排序在一起
我可以做一個二維數組,但如何排序呢?
考慮創建的類:
class Team {
String name;
int numPoints;
}
和具有陣列Team[] teams
。然後可以爲這些對象創建一個比較器,這些對象基於String
和Integer
條件進行排序。
如果您創建了一個包含團隊兩個值的類,並且該類實現了Comparable接口,那麼您會很容易做到這一點。然後使用Arrays.sort排序這些對象的數組並不重要。
創建類和添加兩個比較:
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);
確保使用穩定的排序保持相等鍵的相對順序(也就是說,如果點相等,則不穩定有點像選擇排序威力搞亂球隊的名字的排序順序)。
您需要一個名爲'Team'的'name'和'point'作爲屬性。互聯網上有很多這樣的例子,以及SO本身。請搜索它。 –
這取決於域。如果團隊存在於這些結果之外,那麼您需要一個「團隊」類和「TeamResults」類。 –
您可以改爲使用地圖並按照此處所述進行排序:http://stackoverflow.com/questions/109383/how-to-sort-a-mapkey-value-on-the-values-in-java – Aliza