我有一个约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