Если я правильно понял можно сделать мапу ключём в которой будет enum и значением количество вхождений.
Более того есть специальные мапы и сеты для енумов, так как количество возможных ключей ограничено в их случае, то имеется возможность оптимизации и можно ключи в мапе вовсе не хранить, а значения хранить в ячейках массива, адресуемых порядковым номером енумного элемента - .ordinal(). Посмотрите java.util.EnumMap и java.util.EnumSet. Если вам надо хранить в качестве значений инты и инкрементить их например, то можно просто использовать массив int[], а в качестве индекса все тотже ENUM_ITEM.ordinal()
Начиная с Джавы 8 элементы перечислений можно использовать в switch().
Я обычно делаю примерно так:
switch(enumEl):
case enum1:
//somecode
break;
case enum2:
case enum3:
//somecode
break;
default:
//some code
enum.valueOf() будет искать элемент перечисления, название которого совпадает с переданной строкой. Допустим у нас есть перечисление enum ANIMALS{ CAT, DOG}; Если вызвать ANIMALS.valueOf("DOG"), то метод вернёт элемент перечисления DOG.
Так же для сравнения элементов перечисления можно использовать ==, так как все элементы перечисления это статические объекты, то и ссылки на них равны.
Метод object.equals() будет работать по той же причине.
Вот код класса:
public class Main {
enum ANIMALS {DOG, CAT};
public static void main(String[] args){
System.out.println(ANIMALS.valueOf("DOG"));
ANIMALS animal = ANIMALS.DOG;
if (animal == ANIMALS.DOG)
System.out.println("Равны!!!");
if (animal.equals(ANIMALS.DOG))
System.out.println("Тоже равны!!!");
}
}
Помощники
243 поста785 подписчиков
Правила сообщества
Нельзя обсуждать Политику.
Ругаться и оскорблять.