@Override public int compare(Table one, Table two) { if (one.getState() != null && two.getState() != null) { if (!TableState.SIDEBOARDING.equals(one.getState()) && !TableState.DUELING.equals(one.getState())) { if (one.getState().compareTo(two.getState()) != 0) { return one.getState().compareTo(two.getState()); } } else if (!TableState.SIDEBOARDING.equals(two.getState()) && !TableState.DUELING.equals(two.getState())) { if (one.getState().compareTo(two.getState()) != 0) { return one.getState().compareTo(two.getState()); } } } if (two.getEndTime() != null) { if (one.getEndTime() == null) { return 1; } else { return two.getEndTime().compareTo(one.getEndTime()); } } if (two.getStartTime() != null) { if (one.getStartTime() == null) { return 1; } else { return two.getStartTime().compareTo(one.getStartTime()); } } if (two.getCreateTime() != null) { if (one.getCreateTime() == null) { return 1; } else { return two.getCreateTime().compareTo(one.getCreateTime()); } } return 0; }