我有一个包含大约 70 个字段的枚举。
我希望其中 10 个按特定顺序显示,然后我希望其余的使用比较器按字母顺序显示。我已经尝试了很多东西,但我无法让它发挥作用。
这是一个带有减少属性的示例枚举, 我希望 Picard、Worf 和 William 先显示,然后按字母顺序显示其余的
我不能使用任何第三个库。它必须是java核心。因此,如果您想提供 guava 答案或 apache commons 答案,请在 java core 之外提供。
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);