基于枚举常量的Java排序
我们有一个枚举
enum listE {
LE1,
LE4,
LE2,
LE3
}
此外,我们还有一个包含字符串["LE1", "LE4", "LE2", "LE3"]的列表。有没有一种方法可以根据枚举定义的顺序对列表进行排序(不是自然的String顺序)。
排序后的列表应为["LE1", "LE4", "LE2", "LE3"]。
Sukhhhh asked 2020-07-31T05:13:58Z
10个解决方案
74 votes
Comparable通过枚举的自然顺序(声明值的顺序)实现Comparable。 如果仅通过解析创建枚举值(而不是字符串)的列表,然后使用Collections.sort对该列表进行排序,则它应该以所需的方式进行排序。 如果您再次需要字符串列表,则可以通过在每个元素上调用name()进行转换。
Jon Skeet answered 2020-07-31T05:14:42Z
7 votes
values()方法按定义的顺序返回。
enum Test{
A,B,X,D
}
for(Test t: Test.values()){
System.out.println(t);
}
输出量
A
B
X
D
Jigar Joshi answered 2020-07-31T05:15:06Z
5 votes