EnumSet вместо Set<Enum>?Сегодня я покажу вам один маленький трюк, который может ускорить вашу Java-программу в разы, если вы работаете с
enum.Когда вы создаёте коллекцию, содержащую перечисления, большинство пишет что-то вроде:
Set<Day> days = new HashSet<>();
Но в Java есть специализированная реализация —
EnumSet, которая в десятки раз быстрее, потребляет меньше памяти и гарантирует отсутствие null.Вот как это выглядит:
EnumSet<Day> days = EnumSet.of(Day.MONDAY, Day.WEDNESDAY);
💡 Почему
EnumSet лучше:- Под капотом реализован как битовая маска — супербыстро.
- Использует гораздо меньше памяти, чем обычный
HashSet.- Все значения в
EnumSet должны быть одного enum-типа — меньше шансов ошибиться.-
null туда не добавить — меньше багов.📌 Пример:
enum Day {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY
}
EnumSet<Day> workDays = EnumSet.range(Day.MONDAY, Day.FRIDAY);
System.out.println(workDays); // [MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY]
Если ты до сих пор не используешь
EnumSet, советую обратить внимание. Особенно в перформанс-критичных задачах — это маленькая оптимизация, которая может дать большую разницу.👉 @java_geek