java - 如何按枚举的顺序对 List<Enum, Collection> 进行排序?

标签 java collections enums

枚举:

 public enum ComponentType {
    INSTRUCTION, ACTION, SERVICE, DOMAIN, INTEGRATION,  OTHER, CONTEXT;
 }

A 类:

 public class A
 {
    String name;
    ComponentType c;
    public A(String name, ComponentType c)
    {
      this.name = name;
      this.c = c;
    }

 }   

代码:

 List<A> l = new ArrayList<A>();
 l.add(new A("ZY", ACTION));  
 l.add(new A("ZY0", INSTRUCTION));  
 l.add(new A("ZY1", DOMAIN));  
 l.add(new A("ZY2", SERVICE));  
 l.add(new A("ZY3", INSTRUCTION));  
 l.add(new A("ZY4", ACTION));  

如何根据枚举顺序对列表进行排序?

最佳答案

您应该简单地委托(delegate)给已经提供的枚举 compareTo 方法并反射(reflect)声明顺序(基于 ordinal 值):

Collections.sort(list, (a1, a2) -> a1.getType().compareTo(a2.getType()));        

或者,如果您认为组件类型为您的元素提供“自然顺序”,您可以让 A 类本身实现 Comparable 并委托(delegate) compareTo ComponentType 方法。

关于java - 如何按枚举的顺序对 List<Enum, Collection> 进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13449333/

相关文章:

java - Arrays.sort 魔数(Magic Number)

java - 如何以编程方式发现本地网络上的数据库

java - Collection.sort 不适用于我的数组

java - Android Studio - Collections.sort(), "Cannot Resolve Symbol ' 排序'"?

c# - 多少内存使用字节枚举,这是否优化了 C# 中的内存/速度?

java - 更改 JScrollBar 拇指大小?

Java:测试集合中的重复对象

java - 我可以在 Java 中创建一个抽象枚举吗?

swift - 如何在 Swift 中使用关联值检查枚举的枚举大小写

java - 这段Java代码有没有错误?