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

Sha*_*shi 5 java collections enums

枚举:

 public enum ComponentType {
    INSTRUCTION, ACTION, SERVICE, DOMAIN, INTEGRATION,  OTHER, CONTEXT;
 }
Run Code Online (Sandbox Code Playgroud)

A类:

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

 }   
Run Code Online (Sandbox Code Playgroud)

码:

 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));  
Run Code Online (Sandbox Code Playgroud)

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

Cos*_*atu 5

您应该简单地委托已经提供的enum compareTo()方法并反映声明顺序(基于compareTo值):

Collections.sort(list, (a1, a2) -> a1.getType().compareTo(a2.getType()));        
Run Code Online (Sandbox Code Playgroud)

或者,如果您认为组件类型为元素提供了"自然顺序",则可以使A类本身实现ordinal,并将Comparable方法委托给该类compareTo.