EnumMap и IdentityHashMap
Вопрос
Ключи карты это константы enum Status. Какую реализацию лучше взять?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Варианты ответа
HashMap: остальные реализации медленнее на любых ключахIdentityHashMap: константы enum сравниваются по ссылкеEnumMap: массив поordinal(), без хешированияправильный ответTreeMap: только он сохраняет порядок объявления констант
Разбор
EnumMap хранит значения в массиве, индекс это ordinal() константы: O(1) без вычисления хеша и коллизий, компактно, обход в порядке объявления. HashMap работает, но тратит память на узлы. IdentityHashMap предназначен для случаев, когда нужно именно сравнение по ссылке (графы объектов, сериализация), для enum выгоды нет. TreeMap тоже даст порядок, но за O(log n). Для множеств есть аналог EnumSet на битовой маске.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Что выведет: удаление в foreach без исключения
Следующий вопрос
Сложность операций коллекций