我想将此枚举按颠倒的字母顺序排序并返回。当我尝试通过覆盖使用compareTo方法时,我看到它被声明为 final 。
有没有一种方法可以覆盖Enum,类似于compareTo
如何对它进行排序,这样我得到:
D,C,B,A
public enum Test {
C(1)
B(2)
A(3)
D(4)
}
答案 0 :(得分:0)
由于无法在java.lang.Comparable
上实现enum
,因此一种方法是创建包装器java.util.Set
来比较名称上的enum
。
Set<Test> testEnumSet = new TreeSet<>(new Comparator<Test>() {
@Override
public int compare(Test first, Test second) {
return second.name().compareTo(first.name());
}
});
testEnumSet.addAll(Arrays.asList(Test.values()));
这将产生排序
[D, C, B, A]
要将升序更改为:
return -(second.name().compareTo(first.name()));
答案 1 :(得分:0)
Enum
的{{1}}实现基于枚举的compareTo()
值。
ordinal
是:
ordinal
值final int
(零)开始因此,如果您希望枚举以不同的顺序排序,则可以简单地以该顺序声明它们:
0
(不确定传递给构造函数的值代表什么,所以我维护了您的值)