Java 在枚举处重写compareTo
我想将此枚举按字母顺序倒序排序并返回它。当我试图通过重写compareTo方法来使用它时,我看到它被声明为final 是否有类似于compareTo的覆盖枚举的方法 如何对其进行排序,以便获得: D、 C,B,AJava 在枚举处重写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().
由于无法在
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) }
(不确定传递给构造函数的值代表什么,因此我保留了您的值)