Enums contains only constants and can be compared directly with ==. So, only reference check is needed, no need to use .equals method. Moreover, if .equals used incorrectly, may raise the NullPointerException while that's not the case with == check.
enum Day {
    GOOD, AVERAGE, WORST;
}
public class Test {
    public static void main(String[] args) {
        Day day = null;
        if (day.equals(Day.GOOD)) {//NullPointerException!
            System.out.println("Good Day!");
        }
        if (day == Day.GOOD) {//Always use == to compare enum
            System.out.println("Good Day!");
        }
    }
}
To group, complement, range the enum values we have EnumSet class which contains different methods.
EnumSet#range         : To get subset of enum by range defined by two endpoints
EnumSet#of             : Set of specific enums without any range. Multiple overloaded of methods are there.
EnumSet#complementOf     : Set of enum which is complement of enum values provided in method parameter
enum Page {
   A1, A2, A3, A4, A5, A6, A7, A8, A9, A10
}
public class Test {
  public static void main(String[] args) {
      EnumSet<Page> range = EnumSet.range(Page.A1, Page.A5);
      if (range.contains(Page.A4)) {
          System.out.println("Range contains A4");
      }
      EnumSet<Page> of = EnumSet.of(Page.A1, Page.A5, Page.A3);
      if (of.contains(Page.A1)) {
          System.out.println("Of contains A1");
      }
  }
}