Как устроен EnumSet и EnumMap?

Middle
199 просмотров
AFK Offer AI

EnumSet — множество enum-значений, реализовано как битовая маска (long или long[]). Операции O(1): add, remove, contains — просто битовые операции. Самая быстрая Set-реализация. EnumSet.of(A, B), EnumSet.allOf(MyEnum.class). EnumMap — карта с enum-ключами, реализована как массив по ordinal(). Тоже O(1) и очень компактная. Обе не потокобезопасны. Используй их всегда, когда ключ/элемент — enum, вместо HashSet/HashMap. Значительно экономят память и быстрее.

Следующий вопрос

Что такое off-heap memory и когда её использовать?