我有一個對象陣列等如何對對象數組進行排序?
Player p[] = new Player[t];
而且每個對象具有一個整數變量和名稱變量。
public class Player {
public String player_name;
public int number;
}
從用戶獲得輸入後,我怎麼能根據它們的數量變量對這個對象數組進行排序?
我有一個對象陣列等如何對對象數組進行排序?
Player p[] = new Player[t];
而且每個對象具有一個整數變量和名稱變量。
public class Player {
public String player_name;
public int number;
}
從用戶獲得輸入後,我怎麼能根據它們的數量變量對這個對象數組進行排序?
最簡單的方法是使Player
實施Comparable<Player>
,並執行內部Player
的compareTo(Player)
方法:
public int compareTo(Player player) {
return this.number-player.number;
}
然後,無論你想排序數組,只需ca LL Arrays.sort(p);
請注意,這可能不適用於大數目的負值。更好地使用'Integer.compare' – Puce
創建一個實現Comparator<Player>
的類,稱爲PlayerComparator
。通過創建一個需要兩個Player
的compare
method來實現該接口。根據第一個Player
是否小於,等於或大於第二個Player
,返回負數,零或正數。
然後,您可以創建您的PlayerComparator
並將它(連同您的陣列)傳遞給Arrays.sort
。
使用Java SE 8嘗試像(未經測試):
Arrays.stream(p).sorted((p1, p2) -> Integer.compare(p1.number, p2.number)) .collect(Collectors.toList())
編輯
關於第二個想法,這可能是在這種情況下更有效,因爲它不創建一個新的數組/集:
Arrays.sort(p, (p1, p2) -> Integer.compare(p1.number, p2.number));
用於在lambdas中進行思考的問題:) – mdm
讓你自定義的類實現Comparable
接口,然後你可以使用Java集合排序喲烏爾陣列(Arrays.sort()
功能)
public class Player implements Comparable<Player> {
public String player_name;
public int number;
@Override
public int compareTo(Player object) {
return this.player_name.compareTo(object.player_name);
}
}
排序
Player p[] = new Player[t];
// do stuff
Arrays.sort(p);
你需要對數可變吸氣這個工作,如:
public class Player {
public String player_name;
public int number;
public int getNumber() {
return number;
}
}
然後,如Java 8中,您可以通過使用Comparing
工廠類對其進行排序:
Player[] p = new Player[t];
Arrays.sort(p, Comparator.comparingInt(Player::getNumber));
這將:
Comparator<Person>
,通過比較沒有getNumber
方法。p -> player.getNumber()
的縮寫,它將玩家映射到數字。
Ref。 HTTP://計算器。com/questions/2784514/sort-arraylist-of-custom-objects-by-property?rq = 1(這是一個List,然後參見[Arrays.sort](http://docs.oracle.com/javase/7) /docs/api/java/util/Arrays.html#sort(T[],%20java.util.Comparator))) – user2864740
閱讀關於'Arrays.sort'和'比較器' –
轉動你的眼睛在右邊,到「相關」部分,你會發現幾十個重複的問題。 –