Перечисления реализуют Comparable<E>
(где E is Enum<E>
), и их естественный порядок - это порядок, в котором объявляются константы перечисления.
Вы можете использовать их реализацию Comparable по умолчанию, чтобы получить максимальные и минимальные константы, как объявлено:
public enum BigCountries {
USA(312), INDIA(1210), CHINA(1330), BRAZIL (190);
private int population;
private BigCountries(int population) {
this.population = population;
}
}
Тогда вы можете использовать:
BigCountries first = Collections.min(Arrays.asList(BigCountries.values())); // USA
BigCountries last = Collections.max(Arrays.asList(BigCountries.values())); //BRAZIL
Возможно, более быстрый способ - использовать прямой доступ к массиву, возвращаемому методом values()
:
BigCountries[] values = BigCountries.values();
System.out.println(values[0]); // USA;
System.out.println(values[values.length-1]); // BRAZIL;
Обратите внимание, что параметр, указанный в enum, не влияет на порядок.