Easy Java
Open in Telegram
Лучшие обучающие материалы и другие полезности для Java-разработчиков. Сотрудничество: @heywan_n1 Цены: @heywan_media Реклама на бирже: https://telega.in/c/+r8kkGSypBY84MmIy
Show more5 037
Subscribers
-224 hours
-187 days
-7430 days
Posts Archive
5 037
👩💻 Что такое Collectors.groupingBy() и зачем он нужен?
Collectors.groupingBy() — это коллектор из Java Stream API, который группирует элементы потока по заданному критерию, возвращая Map, где ключ — критерий группировки, а значение — список элементов.
Преимущества:
– Упрощает группировку данных без ручного создания Map
– Поддерживает сложные критерии группировки
– Может комбинироваться с другими коллекторами
⚡️ Пример кода:
import java.util.*;
import java.util.stream.*;
public class GroupingByExample {
public static void main(String[] args) {
List<String> words = Arrays.asList("apple", "banana", "apricot", "berry", "avocado");
// Группировка по первой букве
Map<Character, List<String>> groupedByFirstLetter = words.stream()
.collect(Collectors.groupingBy(word -> word.charAt(0)));
System.out.println(groupedByFirstLetter);
// {a=[apple, apricot, avocado], b=[banana, berry]}
// Группировка по длине слова
Map<Integer, List<String>> groupedByLength = words.stream()
.collect(Collectors.groupingBy(String::length));
System.out.println(groupedByLength);
// {5=[apple, berry], 6=[banana], 7=[apricot, avocado]}
}
}
Особенности:
– Возвращает Map<K, List<T>>
– Может использовать метод-ссылки, лямбды или сложные предикаты
– Поддерживает каскадную группировку
👀 Особенно полезен в анализе и категоризации данных, построении отчетов и статистики, группировке объектов.➡️ Easy Java | #Теория
5 037
Гарантия возврата на Яндекс Афише
Даже если событие только через полгода, покупайте билеты спокойно с Гарантией возврата — вернём всю сумму и сервисный сбор, если поменяете планы.
Подробнее
#реклама 16+
promo.afisha.yandex.ru
О рекламодателе
5 037
📖 Сайт-шпаргалка с различными лайфхаками по Java
Целых 14 страниц статей, теории и фишек. Везде есть подробное объяснение на русском языке вместе с примерами кода.
⛓ Читать статью
➡️ Easy Java | #Статья
5 037
⚡️ Гость иноагента Дудя и бывший айтишник Google и Youtube Андрей Дороничев собрал топлист каналов по IT-тематике в Telegram:
• Технолоджия — новостник про IT и техологии с инсайдами от компаний-единорогов и их СЕО.
• AI-чница — залипательный канал про нейросети и их эволюцию. Страшно интересно!
• Войти в IT — как в 2025 году быть конкурентным айтишником. Обучения, гайды и всё для заработка в индустрии.
• Промт Хакера - Как добиться цифровой защиты, анонимности и безопасности. Инфа от лучших спецов из теневого интернета.
• IT-индус — айтишные мемы для пересылки в рабочие чатики.
• ИИ тебя заменит! — тимлид OpenAI пишет про тренды в разработке нейронки. Буквально вещает с кухни нейросетей.
Советуем подписаться на все!
5 037
👩💻 Что такое Stream.map() в Java и зачем он нужен?
Stream.map() — это промежуточная операция в Java Stream API, которая преобразует каждый элемент потока, применяя к нему заданную функцию. Результатом является новый поток с преобразованными элементами.
Преимущества:
– Упрощает преобразование данных без циклов
– Работает в цепочке операций Stream
– Поддерживает параллельное выполнение
⚡️ Пример кода:
import java.util.*;
public class StreamMapExample {
public static void main(String[] args) {
List<String> fruits = Arrays.asList("apple", "banana", "cherry");
List<String> upperCaseFruits = fruits.stream()
.map(String::toUpperCase) // Преобразуем в верхний регистр
.toList();
System.out.println(upperCaseFruits); // [APPLE, BANANA, CHERRY]
// Преобразование строк в их длины
List<Integer> lengths = fruits.stream()
.map(String::length)
.toList();
System.out.println(lengths); // [5, 6, 6]
}
}
👀 Stream.map() особенно полезен для преобразования данных между форматами, извлечения конкретных полей из объектов и работы с числовыми преобразованиями.
➡️ Easy Java | #Теория5 037
⚡️ Айтишник из «VISION» скупил курсы айти школ и выложил гигабайты материалов к себе
Каждый найдет что-то по душе:
1202 ГБ — Python
1811 ГБ — Frontend
1100 ГБ — C / C++ / C#
804 ГБ — Java
411 ГБ — SQL & БД
309 ГБ — DevOps
998 ГБ — ИБ & Хакинг
773 ГБ — Kotlin / Swift
189 ГБ — PHP
201 ГБ — GoLang
170 ГБ — Rust
167 ГБ — QA / Тестирование
310 ГБ — 1C + Лицензии
495 ГБ — Машинное обучение
704 ГБ — Аналитика Данных
991 ГБ — Дизайн
Материалы в закрепе, постоянно пополняются👆🏻
5 037
📖 Отладка приложений Spring Boot с помощью IntelliJ IDEA
Что такое Spring Boot? — Spring Boot упрощает создание мощных приложений, добавляя несколько зависимостей и выполняя минимальную настройку.
Всего несколько строк кода позволяют настроить конечные точки HTTP, подключиться к базе данных и обрабатывать события.
⛓ Читать статью
➡️ Easy Java | #Статья
5 037
Telegram опубликовал список 8 самых быстрорастущих каналов для программистов:
Only Python — Подборки приёмов и фич, о которых не рассказывают в курсах.
Only Tech — Главные тренды и инсайды из мира технологий, маркетинга и интернет-культуры.
Only Hack — Реальные кейсы кибератак, инструменты и методы защиты, которые используют хакеры.
Only GitHub — Репозитории, которые решают реальные задачи.
Скрипты, фреймворки и готовые решения
Only IT — Без мнений и слухов — только факты и важные IT-события.
Only Apple — Новые апдейты, утечки и фишки, которые Apple ещё не показала.
Only GPT — Промпты, хаки и свежие инструменты, о которых молчат даже AI-каналы.
Only Memes — Если ты когда-нибудь деплоил в пятницу вечером — ты поймешь
Подписывайтесь и прокачивайте свои скиллы.
5 037
👩💻 Викторина: что выведет код?
public class Quiz {
public static void main(String[] args) {
String s1 = "hello";
String s2 = new String("hello");
String s3 = s2.intern();
System.out.println(s1 == s2);
System.out.println(s1 == s3);
System.out.println(s2 == s3);
}
}
➡️ Easy Java | #Викторина5 037
❓ Вопрос с собеса
Где и для чего используется модификатор abstract?
Пример🔽
import java.util.Random;
public class RandomExample {
public static void main(String[] args) {
// 1. Math.random() - простой случайный double
double randomDouble = Math.random();
System.out.println("Math.random: " + randomDouble);
// 2. Random класс с seed для воспроизводимости
Random random = new Random(42);
// Разные типы данных
int randomInt = random.nextInt(100); // 0-99
double randomDbl = random.nextDouble();
boolean randomBool = random.nextBoolean();
System.out.println("Random int: " + randomInt);
System.out.println("Random double: " + randomDbl);
System.out.println("Random boolean: " + randomBool);
// 3. ThreadLocalRandom для многопоточности
java.util.concurrent.ThreadLocalRandom.current()
.ints(3, 1, 10)
.forEach(n -> System.out.println("Stream random: " + n));
}
}
Ответ🔽
Math.random() возвращает double в диапазоне [0.0, 1.0) и использует единственный статический Random объект под капотом, что может вызывать конкуренцию в многопоточности. Класс Random позволяет: – Генерировать разные типы данных (int, long, float) – Работать с несколькими seed'ами – Создавать изолированные экземпляры для потоков➡️ Easy Java | #Собес
5 037
📖 Глубокое погружение в Stream API Java: теория и практика
В статье вы узнаете, что это такое, и как этим пользоваться на реальных примерах и советах.
⛓ Читать статью
➡️ Easy Java | #Статья
5 037
Программисты, это вам 👇
Держите 5 каналов, которые реально помогают изучать программирование и IT с полного нуля:
🖥 Easy Coder — все направления IT.
👩💻 Easy Python — всё о Python.
🌐 Easy WebDev — Frontend, Backend.
🔠 Easy InfoSec — ИБ, Хакинг.
🐱 Easy GitHub — лучшее с GitHub.
Тонны полезной инфы для любого уровня подготовки ✔️
5 037
👩💻 Викторина: что выведет код?
public class Quiz {
record Point(int x, int y) {}
public static void main(String[] args) {
Object obj = new Point(3, 4);
String result = switch (obj) {
case Point(int x, int y) when x == y -> "Equal";
case Point(int x, int y) -> "Sum: " + (x + y);
default -> "Unknown";
};
System.out.println(result);
}
}
➡️ Easy Java | #Викторина5 037
🧑💻 Введение в аспектно-ориентированное программирование на Java
В идеальных случаях разработчики могут сокращать код буквально до пары строк, но для этого нужно отделить бизнес-логику от остального кода. Сделать это можно с помощью аспектно-ориентированного программирования (AOP) — языка для определения именованного аспекта. О нем и пойдет речь в этой статье.🔤 Читать статью 🔤 ➡️ Easy Java | #Статьи #Полезно
5 037
⚡ Совет на 2025 год — не трать деньги на дорогие IT-курсы!
Обучение стоит дорого, поэтому в Telegram появились обучающие каналы по всем IT-направлениям:
👩💻 Python – @python_tg
👩💻 Frontend – @frontend_tg
💻 InfoSec & Хакинг – @infosec_tg
👩💻 Java – @java_tg
👩💻 C / C++ – @plusplus_tg
👩💻 C# & GameDev – @csharp_tg
👩💻 Data Science – @datascience_tg
👩💻 DevOps – @devops_tg
👩💻 Linux – @linux_tg
👩💻 Весь IT – @techno_tg
👩💻 Курсы IT – @itcourse_tg
🤖 ChatGPT для IT — @chatgpt
Не плати за то, что можно получить бесплатно — подписывайся и учись!
5 037
❓ Вопрос с собеса
Где и для чего используется модификатор abstract?
Пример🔽
abstract class DataProcessor {
// Шаблонный метод - определяет алгоритм
public final void process() {
loadData();
transformData();
saveResult();
}
protected abstract void loadData();
protected abstract void transformData();
protected void saveResult() {
System.out.println("Сохранение результата...");
}
}
class CSVProcessor extends DataProcessor {
protected void loadData() {
System.out.println("Загрузка CSV файла");
}
protected void transformData() {
System.out.println("Парсинг и валидация CSV данных");
}
}
public class Main {
public static void main(String[] args) {
DataProcessor processor = new CSVProcessor();
processor.process();
}
}
Ответ🔽
Класс, помеченный модификатором abstract, называется абстрактным классом. Такие классы могут выступать только предками для других классов. Создавать экземпляры самого абстрактного класса не разрешается. При этом наследниками абстрактного класса могут быть как другие абстрактные классы, так и классы, допускающие создание объектов. Метод, помеченный ключевым словом abstract - абстрактный метод, т.е. метод, который не имеет реализации. Если в классе присутствует хотя бы один абстрактный метод, то весь класс должен быть объявлен абстрактным. Использование абстрактных классов и методов позволяет описать некий шаблон объекта, который должен быть реализован в других классах. В них же самих описывается лишь некое общее для всех потомков поведение.➡️ Easy Java | #Собес
5 037
🆕 ⚡️ 🆕 Прокачай скиллы до PRO уровня
В каждом канале собраны лучшие материалы для профессионального роста:
⌨️ Pro Python – от основ до ML и Data Science
⚙ Pro DevOps | Linux – автоматизация, облака, администрирование
⌨️ Pro Java – промышленная разработка и фреймворки
👩💻 Pro Go – высоконагруженные системы и микросервисы
⌨️ Pro Kotlin – мобильная и кроссплатформенная разработка
🖥 Pro JavaScript – полный стек
⚙ Pro Backend – архитектура, базы данных, API
🖥 Pro Frontend – современные фреймворки и инструменты
Подписывайся на каждый сейчас, смотреть будешь потом! 👍
