JAVA_GEEK Telegram 363
🧩 Зачем в Java использовать 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
👍10



tgoop.com/java_geek/363
Create:
Last Update:

🧩 Зачем в Java использовать 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

BY Java Geek


Share with your friend now:
tgoop.com/java_geek/363

View MORE
Open in Telegram


Telegram News

Date: |

How to create a business channel on Telegram? (Tutorial) 4How to customize a Telegram channel? Joined by Telegram's representative in Brazil, Alan Campos, Perekopsky noted the platform was unable to cater to some of the TSE requests due to the company's operational setup. But Perekopsky added that these requests could be studied for future implementation. To delete a channel with over 1,000 subscribers, you need to contact user support But a Telegram statement also said: "Any requests related to political censorship or limiting human rights such as the rights to free speech or assembly are not and will not be considered."
from us


Telegram Java Geek
FROM American