We would like to know how to create Comparator for enum value.
import java.util.Arrays; import java.util.Comparator; import java.util.List; import java.util.Set; import java.util.TreeSet; /* w w w . jav a 2 s.c om*/ public class Main { public static void main(final String[] args) { Listlist = Arrays.asList(new DAY[] { DAY.MON, DAY.WED, DAY.TUE, DAY.THU, DAY.SUN, DAY.SAT, DAY.FRI }); Set set = new TreeSet (); set.addAll(list); for (final DAY day : set) { System.out.println(day.getName()); } System.out.println("new order:"); set = new TreeSet (new DAYComparator()); set.addAll(list); for (final DAY day : set) { System.out.println(day.getName()); } } } enum DAY { MON("MONDAY", 1), TUE("TUESDAY", 2), WED("WEDNESDAY", 3), THU("THURSDAY", 4), FRI("FRIDAY", 5), SAT("SATURDAY", 6), SUN("SUNDAY", 0); private String name; private int index; DAY(String name, int index) { this.name = name; this.index = index; } public String getName() { return name; } public int getIndex() { return index; } } class DAYComparator implements Comparator { @Override public int compare(final DAY o1, final DAY o2) { int returnValue = 0; if (o1.getIndex() > o2.getIndex()) { returnValue = 1; } else if (o1.getIndex() < o2.getIndex()) { returnValue = -1; } return returnValue; } }
The code above generates the following result.
MONDAY TUESDAY WEDNESDAY THURSDAY FRIDAY SATURDAY SUNDAY new order: SUNDAY MONDAY TUESDAY WEDNESDAY THURSDAY FRIDAY SATURDAY