Java | Фишки и трюки
رفتن به کانال در Telegram
Java: примеры кода, интересные фишки и полезные трюки Купить рекламу: https://telega.in/c/java_tips_and_tricks ✍️По всем вопросам: @Pascal4eg Менеджер по рекламе: @shmyzna
نمایش بیشتر6 952
مشترکین
+124 ساعت
-107 روز
+1230 روز
آرشیو پست ها
6 952
⌨️ Чем различаются Thread и Runnable?
Thread - это класс, некоторая надстройка над физическим потоком.
Runnable - это интерфейс, представляющий абстракцию над выполняемой задачей.
Интерфейс Runnable позволяет логически отделить логику выполнения задачи от непосредственного управления потоком.
#java #Thread #Runnable6 952
Ваши товары станут заметнее в поиске Яндекса
Яндекс Товары — сервис для аналитики и роста продаж интернет-магазинов. Подробнее ⚡
Попробовать
#реклама
merchants.yandex.ru
О рекламодателе
6 952
⌨️ Чем отличаются методы Stream.toList() и Stream.collect(Collectors.toList())?
Методы
Stream.toList() и Stream.collect(Collectors.toList()) кажутся схожими, так как оба возвращают список, но есть ключевое отличие: Stream.toList() возвращает неизменяемый список, а Stream.collect(Collectors.toList()) возвращает изменяемый список на базе ArrayList.
#java #stream #toList6 952
👩💻 Как эффективно использовать OAuth 2 в Spring-приложениях?
Ждем вас на открытом вебинаре 18 сентября в 20:00 мск.
где мы разберем:
✔️ что такое OAuth 2 и как он работает в Spring-приложениях;
✔️ какие роли и процессы задействованы в фреймворке авторизации;
✔️ его расширения;
✔️ ответы на все возникающие вопросы.
Урок идеально подходит для Java- и Kotlin-разработчиков.
Встречаемся в преддверии старта курса «Разработчик на Spring Framework». Все участники вебинара получат специальную цену на обучение!
📌 Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://otus.pw/po36/?erid=LjN8JxeNd
6 952
⌨️ "Распрямление" потока. Метод flatMap
Метод
Stream.flatMap используется для преобразования элементов одного потока (stream) в несколько элементов другого потока, а затем объединения этих элементов в один поток. Это особенно полезно, когда у вас есть коллекция коллекций, и вы хотите "распрямить" её, т.е. получить плоскую структуру, содержащую все элементы.
Допустим, у вас есть список строк, каждая из которых содержит несколько слов, и вы хотите получить поток всех слов:
List<String> sentences = Arrays.asList("Java is fun", "I love programming");
Stream<String> wordsStream = sentences.stream()
.flatMap(sentence -> Arrays.stream(sentence.split(" "))); // Преобразуем в поток слов
wordsStream.forEach(System.out::println);
Результат:
Java is fun I love programmingЗдесь каждый массив слов был преобразован в поток, а затем
flatMap "распрямил" эти потоки в один.
#java #stream #flatMap6 952
Бесплатный интенсив: Java-разработчик: старт в профессии с нуля.
📆 Когда: 17-18 сентября в 19:00 по мск.
За два дня интенсива в прямом эфире, под руководством опытного Java-разработчика, вы сможете:
✔️ Познакомиться с синтаксисом и основными конструкциями языка Java.
✔️ Написать свой первый проект и определить, подходит ли вам профессия разработчика.
✔️ Создать Telegram-бота с нуля.
✔️ Узнать ответы интересующие вас вопросы.
✔️ Получить доступ к закрытому профессиональному сообществу.
🎁 Подарки для участниковинтенсива: гайд «Как заговорить на сленге IT-специалистов», карта компетенций начинающего Java-разработчика и доступ в закрытое сообщество «Старт в Java» от Хекслета!
6 952
⌨️ Классы-обёртки (wrapper classes)
В Java классы-обёртки (wrapper classes) используются для того, чтобы представлять примитивные типы данных как объекты. Это необходимо, так как Java — это объектно-ориентированный язык, и в некоторых случаях, например, при работе с коллекциями, нужно использовать объекты вместо примитивных типов. Для каждого примитивного типа данных существует соответствующий класс-обёртка.
Java автоматически преобразует примитивные типы в соответствующие объекты классов-обёрток и наоборот. Это упрощает код, так как программисту не нужно делать это вручную.
Все классы-обёртки являются неизменяемыми, то есть их значения не могут быть изменены после создания.
Некоторые классы-обёртки, такие как Byte, Short, Integer и Long, кэшируют значения в определённом диапазоне (от -128 до 127), что улучшает производительность при частом использовании этих значений.
#java #wrappers
6 952
👩💻 Программирование теперь в Telegram!
Вот 8 обучающих каналов по самым востребованным направлениям в IT.
Выбирай своё направление:
👩💻 Java: @java_ready
📖 Общее IT: @roadmap_ready
👩💻 Python: @python_ready
👩💻 C#: @csharp_ready
👩💻 C/C++: @cpp_ready
👩💻 Frontend: @code_ready
🖥 Базы Данных & SQL: @sql_ready
🖥 Design: @time_design
📌 Ресурсы, гайды, шпаргалки, книги, задачи и статьи для каждого языка программирования.
6 952
public class Quest {
public static void main(String[] args) {
List<Integer> ints = List.of(1, 2, 3, 4, 5, 6, 7, 8, 9);
ints.stream()
.filter(i -> i % 2 == 0)
.skip(1)
.limit(1)
.forEach(System.out::print);
}
}
#java #quest6 952
Мечтаешь о карьере в бигтехе?
Приходи на интенсив в Открытые школы Т1 для Java-разработчиков с опытом от года. Это возможность получить оффер от Т1 — крупнейшей ИТ-компании страны по версии RAEX и CNews Analytics 2023 🔝, в портфеле которой 800+ масштабных проектов и 70+ продуктов и услуг.
Поддержка наставников и советы HR помогают пройти интервью в Т1 успешнее, а карьерный трек позволяет выпускникам программы быстрее вырасти из джуна в мидла в Т1.
Почему в Т1 классно?
🔹Уникальный рыночный опыт. Наши проекты ежегодно получают награды на ИТ-конкурсах: Global CIO, Национальной банковской премии и др.
🔹Быстрый рост в ИТ при экспертной поддержке. Карьерные треки для выпускников Открытых школ позволяют быстро вырасти в мидла.
🔹Работа в бигтехе, где есть ДМС, удалёнка и крутые офисы, спорт и обучение, митапы, программы развития и др.
⌛️ Быстрое обучение: 1 месяц.
💻 Гибкий формат: все этапы онлайн, занятия по вечерам.
Подавай заявку до 13 сентября!
Старт 16 сентября.
Реклама. ООО "Т1". ИНН 7720484492.
6 952
От всей души поздравляю всех программистов и им сочувствующих! 🎉
Пусть код всегда будет чистым, как слеза, проекты — увлекательными и вдохновляющими, а коллеги — понимающими и дружелюбными! Желаю тебе легких решений сложных задач и бесконечного потока креатива. Пусть каждый день приносит новые вызовы и радости в мир программирования! 🚀
6 952
⌨️ Усечение потока данных. Метод limit
Потоки данных поддерживают метод
limit(n). Он возвращает еще один поток, не превышающий заданную длину, переданную в limit в виде аргумента. Если поток данных упорядоченный, возвращаются первые элементы, но не более чем n.
Например, с помощью следующего кода можно создать List, выбрав первые три блюда, содержащие более 300 калорий:
List<Dish> dishes = specialMenu
.stream()
.filter(dish -> dish.getCalories() > 300)
.limit(3)
.collect(toList());
Метод limit работает и для неупорядоченных потоков данных (например, когда источник представляет собой объект типа Set). В этом случае не следует исходить из допущения о какой-либо упорядоченности результата, возвращенного методом limit.
#java #stream #limit6 952
⚡ Когда мне говорят, что Java слишком простой язык, я показываю канал Java Learning
Здесь я научился:
▪️ Разрабатывать высоконагруженные серверные приложения
▪️ Управлять сложными базами данных
▪️ Организовывать эффективную многопоточную обработку данных
▪️ Проходить технические собеседования в ведущие IT-компании
Самый необычный канал про Java, подписывайся – @Java_per_month
6 952
⌨️ Срезы в стримах. Метод dropWhile
Операция
dropWhile служит дополнением к операции takeWhile. Она отбрасывает первые элементы, для которых предикат возвращает true. Как только результат вычисления предиката становится ложным, она прекращает работу и возвращает все оставшиеся элементы, причем работает даже в том случае, если число оставшихся элементов бесконечно!
List<Integer> ints = List.of(1,2,3,4,5,6,7,8,9);
ints.stream()
.dropWhile(i -> i < 5)
.forEach(System.out::println);
// 5 6 7 8 9
#java #stream #dropWhile6 952
Представьте себе мир, где вы создаёте игры и приложения, которые покоряют сердца миллионов пользователей. Ваши идеи оживают на экранах смартфонов и компьютеров, а вы наслаждаетесь свободой и гибкостью фриланса.
Java — один из самых популярных языков программирования, который используют разработчики для создания различных приложений. Если вы давно мечтаете попробовать себя в этой сфере, скорее записывайтесь на мини-курс по Java-разработке: https://epic.st/OLS_K2?erid=2VtzquiRuaV
🎉 Подарок за регистрацию — гайд по профессии Java-разработчика.
Формат мини-курса отлично подойдёт для обучения из любой точки мира: смотрите видео в удобное время и закрепляйте навыки на практике. Больше не надо искать свободное время, чтобы прийти на вечерний вебинар, или ждать записи в случае пропуска.
Хватит мечтать, пора реализовывать!
Реклама. ЧОУ ДПО «Образовательные технологии «Скилбокс (Коробка навыков)», ИНН: 9704088880
6 952
⌨️ Срезы в стримах. Метод takeWhile
В Java 9 появилось два новых метода, полезных для выбора элементов потока с хорошей производительностью: takeWhile и dropWhile.
Допустим, у нас есть следующий список блюд:
List<Dish> specialMenu = Arrays.asList(
new Dish("seasonal fruit", 120),
new Dish("prawns", 300),
new Dish("rice", 350),
new Dish("chicken", 400),
new Dish("french fries", 530));
Для получения блюд с калорийностью меньше 320, можно воспользоваться операцией filter. Недостаток операции filter в том, что она требует прохода в цикле по всему потоку данных с применением предиката ко всем элементам.
В нашем примере список уже отсортирован по числу калорий. Вместо того, чтобы пройтись по каждому элементу, можно прекратить работу сразу же после обнаружения блюда, содержащего 320 калорий или более. В случае небольшого списка это может показаться не таким уж громадным преимуществом, но при работе с потенциально большим потоком элементов окажется весьма полезным.
Поможет нам в этом операция takeWhile! Она позволяет выполнить срез любого потока данных (даже бесконечного) с помощью предиката. И, к счастью, она прекращает работу сразу же по обнаружении неподходящего элемента. Вот как ее следует использовать:
List<Dish> sliceMenu1
= specialMenu.stream()
.takeWhile(dish -> dish.getCalories() < 320)
.collect(toList());
#java #stream #takeWhile6 952
Коллеги, всем привет!
Много людей в комментариях и личку давно просили больше тестов и наконец у меня дошли руки, чтобы сделать отдельный канал, в котором я буду ежедневно публиковать тесты по Java Core, а также Spring.
Тесты, которые там публикую можно спокойно использовать в том числе для подготовки к сертификации по:
▫️OCA/OCP экзаменам от Oracle
▫️Сертификации по Spring от VMWare.
Или просто когда скучно на перерыве за кофе)
Подключайтесь 👉 https://t.me/+fPICp5L0C_5hNDk6
6 952
⌨️ В каких состояниях может находиться поток?
Потоки могут находиться в одном из следующих состояний:
✔️ Новый (New). После создания экземпляра потока, он находится в состоянии Новый до тех пор, пока не вызван метод
start(). В этом состоянии поток не считается живым.
✔️ Работоспособный (Runnable). Поток переходит в состояние Работоспособный, когда вызывается метод start(). Поток может перейти в это состояние также из состояния Работающий или из состояния Блокирован. Когда поток находится в этом состоянии, он считается живым.
✔️ Работающий (Running). Поток переходит из состояния Работоспособный в состояние Работающий, когда Планировщик потоков выбирает его как работающий в данный момент.
✔️ Живой, но не работоспособный (Alive, but not runnable). Поток может быть живым, но не работоспособным по нескольким причинам:
▪️Ожидание (Waiting). Поток переходит в состояние Ожидания, вызывая метод wait(). Вызов notify() или notifyAll() может перевести поток из состояния Ожидания в состояние Работоспособный.
▪️Сон (Sleeping). Метод sleep() переводит поток в состояние Сна на заданный промежуток времени в миллисекундах.
▪️Блокировка (Blocked). Поток может перейти в это состояние, в ожидании ресурса, такого как ввод/вывод или из-за блокировки другого объекта. В этом случае поток переходит в состояние Работоспособный, когда ресурс становится доступен.
▪️Мёртвый (Dead). Поток считается мёртвым, когда его метод run() полностью выполнен. Мёртвый поток не может перейти ни в какое другое состояние, даже если для него вызван метод start().
#java #Thread #state
اکنون در دسترس! پژوهش تلگرام ۲۰۲۵ — مهمترین بینشهای سال 
