Рассмотрим сценарий, в котором вы определяете мухи для каждого объекта формы, как:
public enum SHAPE {
TRIANGLE, RECTANGLE, SQUARE, HEXAGON;
}
И давайте предположим, что создание объекта для всех этих форм каждый раз огромен. Скажем, он входит в БД и извлекает некоторые данные в конструкторе. Что ты делаешь?
Вы сохраните его в карте с помощью ключа перечислимых и значения в качестве одного объекта времени, а затем с помощью перечисления, вы говорите, попытаться назвать что-то вроде:
public double calculateArea(SHAPE shape) {
Figure figure = map.get(shape);//you dont create object but take it from a map
return figure.calculate();
}
Для EnumSet, считаете вас есть перечисление с основными цветами, как :
enum COLORS {
RED, BLUE, GREEN
}
Теперь, если я хочу создать сказать желтый цвет и хотите знать иНГРЕДИЕНТЫ за то же самое, я мог бы использовать EnumSet с двумя цветами, как зеленый и красный. Точно так же я мог хранить несколько наборов с изменениями в соответствии с моими требованиями к цвету.
Это просто, к примеру, цель, но вы можете даже добавить счетчик, чтобы усложнить его, чтобы сказать, сколько из RED, BLUE, GREEN вариантов пикселей вам нужно.
Если вам нужен именованный флаг, вам понадобится «EnumSet» (гораздо лучше в читаемости, чем при использовании 'int' и бит-магии, например). Если вы хотите присвоить значения или значения по умолчанию/функции значениям перечисления, вам понадобится «EnumMap». –
Ваш вопрос не кристально чист. Вы хотите узнать о сценариях, где EnumMap и EnumSet предпочтительнее HashMap и HashSet, или вы спрашиваете, когда следует использовать EnumMap и когда EnumSet (скажем, потому что вы их путаете)? – Pshemo
Я просто хочу знать, почему или когда нам нужна коллекция (Map and Set) для перечисления. Извините, если мой вопрос запутан. – mvg