Что произойдет, если вызвать orElse() для метода, который делает тяжелую операцию (например, запрос в БД), даже если значение в Optional уже есть?
Anonymous Quiz
44%
Ничего не напечатает, так как Optional не пуст.
39%
Напечатает "Вызов тяжелого метода!", и result будет "Hello".
13%
Напечатает "Вызов тяжелого метода!", и result будет "Default".
4%
Ошибка компиляции.
🔥6🥴4 3👍1👏1
🔍 Ответ на задачу про Optional: Почему orElse может тормозить ваш код? 🐢
Использование Optional — это стандарт де-факто в современном Java-коде. Но знаете ли вы разницу между
Задача: Что произойдет, если вызвать
Объяснение:
Вывод: В примере выше на консоль выведется "Вызов тяжелого метода!", хотя значение "Hello" уже есть. Если бы мы использовали
⚡️ Не перепутайте:
Используйте
Используйте
Понравился разбор? Ставь ❤️, подписывайся и пиши в комментариях, какие ещё методы Optional тебя путают!
#java #optional #performance #clean_code #backend #интервью #java_interview_tasks
Использование Optional — это стандарт де-факто в современном Java-коде. Но знаете ли вы разницу между
orElse() и orElseGet()? Ошибка здесь может привести к лишним вызовам методов и даже к падению производительности.Задача: Что произойдет, если вызвать
orElse() для метода, который делает тяжелую операцию (например, запрос в БД), даже если значение в Optional уже есть?Объяснение:
orElse(T other) принимает готовый объект. Это значит, что аргумент вычисляется до вызова метода orElse. Даже если Optional не пустой, getDefaultValue() будет выполнен! orElseGet(Supplier<? extends T> other) принимает лямбду (Supplier). Она выполняется только тогда, когда Optional действительно пуст (ленивые вычисления).Вывод: В примере выше на консоль выведется "Вызов тяжелого метода!", хотя значение "Hello" уже есть. Если бы мы использовали
optional.orElseGet(() -> getDefaultValue()), лишнего вызова бы не было.⚡️ Не перепутайте:
Используйте
orElse(), если у вас уже есть готовая константа или примитив.Используйте
orElseGet(), если получение дефолтного значения требует вычислений или создания нового объекта.Понравился разбор? Ставь ❤️, подписывайся и пиши в комментариях, какие ещё методы Optional тебя путают!
#java #optional #performance #clean_code #backend #интервью #java_interview_tasks
❤11👍6🔥5👏1
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5
🔍 Ответ на задачу про списки: В чём подвох Arrays.asList() и List.of()? 📝
Казалось бы, оба метода создают список из элементов. Но ведут они себя совершенно по-разному, что часто приводит к
Объяснение:
Вывод:
⚡️ Не перепутайте:
Нужен список, который меняется вместе с массивом? Используйте
Нужна гарантия неизменяемости и безопасности? Используйте
Было полезно? Жми ❤️ и подписывайся, чтобы не пропустить новые разборы!
#java #collections #list #arrays #immutable #backend #интервью #java_interview_tasks
Казалось бы, оба метода создают список из элементов. Но ведут они себя совершенно по-разному, что часто приводит к
UnsupportedOperationException или неожиданным изменениям данных.Объяснение:
Arrays.asList() — это "обертка" над массивом. Он возвращает список фиксированного размера. Если изменить элемент в массиве, он изменится и в списке! Добавлять/удалять элементы нельзя. List.of() (появился в Java 9) создает полностью неизменяемый (immutable) список. Он копирует данные из массива. Изменение массива на него не влияет. Добавлять/удалять элементы также нельзя. Кроме того, List.of() запрещает null.Вывод:
list1.get(0) выведет "C" (связь с массивом сохранена).list2.get(0) выведет "A" (данные скопированы).⚡️ Не перепутайте:
Нужен список, который меняется вместе с массивом? Используйте
Arrays.asList().Нужна гарантия неизменяемости и безопасности? Используйте
List.of().Было полезно? Жми ❤️ и подписывайся, чтобы не пропустить новые разборы!
#java #collections #list #arrays #immutable #backend #интервью #java_interview_tasks
❤10🔥3👍2
📂 Подборка каналов по AI, IT & HR Tech
Каналы для тех, кто работает в IT и хочет держать руку на пульсе без мониторинга сотни источников.
Что внутри:
🔗 [Добавить папку]
Каналы для тех, кто работает в IT и хочет держать руку на пульсе без мониторинга сотни источников.
Что внутри:
– AI: реальные инструменты и внедрения, без хайпа;
– IT: тренды, обзоры, инсайты от первых лиц;
– Карьера: как расти и не выгорать;
– AI Life hacks: ИИ для удалённой работы и не только; – HR Tech: кто и как нанимает профессионалов сейчас, где и как найти сегодня работу за рубежом;
🔗 [Добавить папку]
🔥4
Что выведет этот код?
Anonymous Quiz
52%
"three"
7%
"one", "two", "three"
36%
Ничего не выведет.
4%
Ошибка компиляции.
👍3
УСПЕВАЕШЬ СЛЕДИТЬ ЗА НОВИНКАМИ ?! Технологии не ждут ...
* Когда подписки устарели (outdated) - пора сделать АПГРЕЙД своего информационного поля.
Это ПОДБОРКА ведущих Telegram-каналов — тех самых людей, которые не просто читают новости, а сами их создают.
📂 Добавляй ПАПКУ — и получи полный АПГРЕЙД своей ленты:
* Сделай свою подписку умнее, пока другие читают вчерашние новости ⚡️
Отписаться можно в любой момент. Остаться — тоже ✔️
* Когда подписки устарели (outdated) - пора сделать АПГРЕЙД своего информационного поля.
Это ПОДБОРКА ведущих Telegram-каналов — тех самых людей, которые не просто читают новости, а сами их создают.
📂 Добавляй ПАПКУ — и получи полный АПГРЕЙД своей ленты:
* Сделай свою подписку умнее, пока другие читают вчерашние новости ⚡️
Отписаться можно в любой момент. Остаться — тоже ✔️
👍3🔥1
🔍 Ответ на задачу про Stream.peek(): Почему ничего не напечаталось? 🕵️♂️
Метод
Объяснение: Стримы в Java ленивы. Промежуточные операции (filter, map, peek) не выполняются до тех пор, пока не будет вызвана терминальная операция (collect, forEach, count и т.д.). В данном коде терминальной операции нет, поэтому конвейер даже не запустится.
Вывод: Код не выведет ничего. Чтобы
⚡️ Не перепутайте:
Всегда завершайте цепочку стрима терминальной операцией.
#java #streamapi #peek #lazy #backend #интервью #java_interview_tasks
Метод
peek() часто используют для логирования промежуточных этапов стрима. Но новички часто забывают про "ленивость" стримов.Объяснение: Стримы в Java ленивы. Промежуточные операции (filter, map, peek) не выполняются до тех пор, пока не будет вызвана терминальная операция (collect, forEach, count и т.д.). В данном коде терминальной операции нет, поэтому конвейер даже не запустится.
Вывод: Код не выведет ничего. Чтобы
peek сработал, нужно добавить, например, .collect(Collectors.toList()) в конце.⚡️ Не перепутайте:
peek() предназначен для отладки, не используйте его для изменения состояния объектов (side-effects).Всегда завершайте цепочку стрима терминальной операцией.
#java #streamapi #peek #lazy #backend #интервью #java_interview_tasks
🔥4❤3
Что произойдет при попытке добавить null в качестве ключа в пустую TreeMap?
Anonymous Quiz
44%
В мапу добавится пара {null="value"}.
9%
Ничего не произойдет, мапа останется пустой.
40%
NullPointerException.
7%
Ошибка компиляции.
🔥4