我有一個約70個字段的Enum。排序:如何創建特定的自定義訂單,然後按字母順序排序java
我希望其中的10個以特定順序顯示,然後我希望其餘的按字母順序使用比較器顯示。我嘗試過很多東西,但是我無法完成它的工作。
下面是一個示例枚舉與降低屬性 我想要的Picard,的Worf和William首先顯示,然後,其餘按字母順序
我不能使用任何第三庫。它必須是Java核心。所以如果你想提供番石榴的答案,或者apache commons的答案,除了java核心之外,請這樣做。
public enum StarTrek {
JeanLucPicard("Picard"),
GeordiLaForge("Geordi"),
DiannaTroi("Dianna"),
Worf("Worf"),
WilliamRiker("William"),
Q("Q");
private String label;
StarTrek(String label) { this.label = label; }
@Override public String toString() { return label; }
}
List<StarTrek> specificOrder = Arrays.asList(StarTrek.JeanLucPicard, StarTrek.Worf, StarTrek.WilliamRiker);
Comparator<StarTrek> comp = new Comparator<StarTrek>() {
@Override
public int compare(StarTrek o1, StarTrek o2) {
//TODO: loop through the specific order, and display those first, then for the rest, go alphabetic
return 0;
}
};
List<StarTrek> all = Arrays.asList(StarTrek.values());
Collections.sort(all, comp);
爲什麼不這樣做的兩個步驟? – 2013-02-26 14:36:47
我已經通過不使用排序來解決它,只是刪除和添加集合,但我想用排序來解決它。它更好。我也只想打電話給排序 – 2013-02-26 14:40:54
我不太確定它更好。兩個步驟對我來說會更具可讀性,並阻止您使用僅用於顯示的元數據污染您的枚舉類。 – 2013-02-26 14:44:09