package com.java110.event.center; import com.java110.event.app.order.Ordered; import java.util.Collections; import java.util.Comparator; import java.util.List; /** * 侦听排序类 * Created by wuxw on 2018/4/17. */ public class DataFlowListenerOrderComparator implements Comparator { public static final DataFlowListenerOrderComparator INSTANCE = new DataFlowListenerOrderComparator(); public static void sort(List list) { if (list.size() > 1) { Collections.sort(list, INSTANCE); } } @Override public int compare(Object o1, Object o2) { return doCompare(o1,o2); } private Integer getOrder(Object obj){ return (obj instanceof Ordered ? ((Ordered) obj).getOrder() : null); } private int doCompare(Object o1, Object o2) { boolean p1 = (o1 instanceof Ordered); boolean p2 = (o2 instanceof Ordered); if (p1 && !p2) { return -1; } else if (p2 && !p1) { return 1; } int i1 = getOrder(o1); int i2 = getOrder(o2); return (i1 < i2) ? -1 : (i1 > i2) ? 1 : 0; } }