Java 在枚举处重写compareTo

Java 在枚举处重写compareTo,java,class,sorting,methods,enums,Java,Class,Sorting,Methods,Enums,我想将此枚举按字母顺序倒序排序并返回它。当我试图通过重写compareTo方法来使用它时,我看到它被声明为final 是否有类似于compareTo的覆盖枚举的方法 如何对其进行排序,以便获得: D、 C,B,A 由于无法在enum上实现java.lang.Comparable,因此一种方法是创建一个包装器java.util.Set,以比较名称上的enum Set testEnumSet=新树集(新比较器(){ @凌驾 公共int比较(第一次测试,第二次测试){ 返回second.name().

我想将此枚举按字母顺序倒序排序并返回它。当我试图通过重写compareTo方法来使用它时,我看到它被声明为final

是否有类似于compareTo的覆盖枚举的方法

如何对其进行排序,以便获得:

D、 C,B,A


由于无法在
enum
上实现
java.lang.Comparable
,因此一种方法是创建一个包装器
java.util.Set
,以比较名称上的
enum

Set testEnumSet=新树集(新比较器(){
@凌驾
公共int比较(第一次测试,第二次测试){
返回second.name().compareTo(first.name());
}
});
addAll(Arrays.asList(Test.values());
这将产生

[D, C, B, A]
要将顺序更改为升序,请执行以下操作:

return-(second.name().compareTo(first.name());

由于无法在
enum
上实现
java.lang.Comparable
,一种方法是创建一个包装器
java.util.Set
来比较名称上的
enum

Set testEnumSet=新树集(新比较器(){
@凌驾
公共int比较(第一次测试,第二次测试){
返回second.name().compareTo(first.name());
}
});
addAll(Arrays.asList(Test.values());
这将产生

[D, C, B, A]
要将顺序更改为升序,请执行以下操作:

return-(second.name().compareTo(first.name());

比较()的
Enum
实现基于Enum的
序数

序号是:

  • 原语
    final int
  • 施工期间分配
  • 基于枚举声明的顺序
  • 0开始
    (零)

因此,如果希望枚举按不同的顺序排序,只需按该顺序声明即可:

public enum Test { D(4), C(1), B(2), A(3) }

(不确定传递给构造函数的值代表什么,所以我维护了您的值)

Enum
compareTo()
实现基于Enum的
序数

序号是:

  • 原语
    final int
  • 施工期间分配
  • 基于枚举声明的顺序
  • 0开始
    (零)

因此,如果希望枚举按不同的顺序排序,只需按该顺序声明即可:

public enum Test { D(4), C(1), B(2), A(3) }
(不确定传递给构造函数的值代表什么,因此我保留了您的值)