約 70 のフィールドを持つ Enum があります。
そのうちの 10 個を特定の順序で表示し、残りを Comparator を使用してアルファベット順に表示したいと考えています。私は多くのことを試しましたが、うまくいきません。
これは、 Picard、Worf、William に最初に表示させ、残りをアルファベット順に表示させたい reduce属性の列挙型の例 です。
サード ライブラリを使用できません。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);