ru
Feedback
Easy Java

Easy Java

Открыть в Telegram

Лучшие обучающие материалы и другие полезности для Java-разработчиков. Сотрудничество: @heywan_n1 Цены: @heywan_media Реклама на бирже: https://telega.in/c/+r8kkGSypBY84MmIy

Больше
5 033
Подписчики
-624 часа
-237 дней
-7830 день
Архив постов
Ошибка: ConcurrentModificationException при итерации по списку. При изменении ArrayList во время итерации можно получить ConcurrentModificationException. ❌ Ошибка:
import java.util.*;

public class ConcurrentModExample {
    public static void main(String[] args) {
        List<Integer> numbers = new ArrayList<>(List.of(1, 2, 3, 4, 5));

        for (Integer num : numbers) {
            if (num % 2 == 0) {
                numbers.remove(num); // ❌ ConcurrentModificationException
            }
        }
    }
}
👍 Разбор: ✔️ ArrayList использует модификационный счётчик, который ломается при изменении коллекции во время итерации. ✔️ for-each использует Iterator, который не поддерживает удаление элементов во время итерации. ✔️ Правильный вариант 1: Использовать Iterator.remove()
Iterator<Integer> iterator = numbers.iterator();
while (iterator.hasNext()) {
    if (iterator.next() % 2 == 0) {
        iterator.remove(); //  Работает корректно
    }
}
✔️ Правильный вариант 2: Использовать removeIf()
numbers.removeIf(n -> n % 2 == 0); //  Удаляет без исключений
💡 Запомни: ✔️ for-each нельзя использовать для удаления элементов. ✔️ Используй Iterator.remove() или removeIf(). ❓ А вы знали об этом? 📍 Теги: #java #concurrentmodification #collections #mistakes #bestpractices

🟢 1. Ошибка: == vs equals() при сравнении строк В Java строки (String) сравниваются не через ==, а с equals(), иначе возможны ошибки. 📌 Ошибка:
public class StringComparison {
    public static void main(String[] args) {
        String s1 = "hello";
        String s2 = new String("hello");

        System.out.println(s1 == s2);      // ❌ false (сравнение ссылок)
        System.out.println(s1.equals(s2)); // ✅ true (сравнение значений)
    }
}
👍 Разбор: ✔️ == сравнивает ссылки на объекты в памяти, а не значения. ✔️ equals() сравнивает сами строки. ✔️ Правильный вариант:
if (s1.equals(s2)) {
    System.out.println("Строки равны ");
}
💡 Запомни: ✔️ Используй equals() для строк. ✔️ == работает только для пулла строк (String s1 = "hello"; String s2 = "hello";). ❓ А вы знали об этом? 📍 Теги: #java #string #equals #mistakes #bestpractices

👩‍💻 Java - Полный Курс по Java
В этом видеокурсе автор пошагово и простым языком ознакомит вас с важными концепциями языка Java. Преподаватель на практике показывает — как, что и зачем делать, прямо в редакторе кода.
🔤 Ссылка на источник 🔤 ➡ Easy Java |#Видео #Курсы

➡️ Easy Java | #Мемы

🎉 Розыгрыш 10 000 звёзд Telegram! 🎉 Друзья, у нас отличные новости! Мы разыгрываем 10 000 звёзд Telegram среди подписчиков
🎉 Розыгрыш 10 000 звёзд Telegram! 🎉 Друзья, у нас отличные новости! Мы разыгрываем 10 000 звёзд Telegram среди подписчиков канала «Цифровая кухня». Участвуйте и получите шанс выиграть один из пяти призов! 🏆 Призовые места: 1 место: 3 000 звёзд 2 место: 2 500 звёзд 3 место: 2 000 звёзд 4 место: 1 500 звёзд 5 место: 1 000 звёзд 📋 Условия участия: 1. Подпишись на канал «Цифровая кухня» 2. Нажать кнопку "Участвую!" ⏰ Подведение итогов: 11 марта 2025 года в 18:00 на канале «Цифровая кухня» мы случайным образом выберем 5 победителей среди всех подписчиков канала. Результаты будут опубликованы там же. Что можно делать со звёздами? Звёзды Telegram можно использовать для покупки стикеров, подарков в чатах или перевода в другие активы. Это реальные деньги, которые сделают ваш Telegram ещё удобнее! Не упустите шанс! Подписывайтесь на канал «Цифровая кухня», чтобы не пропустить важные новости, полезные материалы и, конечно, результаты розыгрыша.

Recursion vs Iteration: Что выбрать?🗳 Рекурсия и итерация — два способа решения задач. Какой выбрать? 📌 Факториал: Рекурсия vs Итерация ✔️ Рекурсия:
public static int factorialRecursive(int n) {
    return (n == 1) ? 1 : n * factorialRecursive(n - 1);
}
✔️ Итерация:
public static int factorialIterative(int n) {
    int result = 1;
    for (int i = 2; i <= n; i++) {
        result *= i;
    }
    return result;
}
👍 Разбор: ✔️ Рекурсия удобна для разделяй и властвуй, но может вызвать StackOverflowError. ✔️ Итерация эффективнее по памяти, но иногда менее читаема. ✔️ В Java лучше избегать глубоких рекурсий из-за ограниченного стека. 💡 Запомни: ✔️ Рекурсия = удобство, но риск StackOverflowError. ✔️ Итерация = производительность и безопасность. 📍 Теги: #java #recursion #iteration #performance #bestpractices

🚀 Cегодня пройдет полезный бесплатный урок «Bun – быстрый альтернативный рантайм для Node.js» от онлайн-курса Node.js Develo
🚀 Cегодня пройдет полезный бесплатный урок «Bun – быстрый альтернативный рантайм для Node.js» от онлайн-курса Node.js Developer 05 марта 20:00 (мск). https://otus.pw/bI25/ Что будет на вебинаре? 1️⃣Разбор возможностей Bun: быстрый сервер, менеджер пакетов и тестирование. 2️⃣Сравнение Bun с Node.js: плюсы, минусы, производительность. 3️⃣Практическое применение Bun в реальных проектах. Кому вебинар будет полезен? - Фронтент, - Фуллстэк, - Бэкенд разработчикам на Node.js - И других языках для web'а. Что узнают участники на вебинаре? ✅ Как использовать Bun для запуска серверов и выполнения JavaScript-приложений. ✅ Как переходить с Node.js на Bun и какие сценарии использования подходят лучше всего. ⏰ Торопитесь! Успейте зарегистрироваться на бесплатный вебинар, который пройдет уже сегодня, 05 марта, в 20:00 (мск). Запись ограничена! https://otus.pw/bI25/?erid=2W5zFGrSctp #реклама О рекламодателе

Senior-разработчики, тимлиды и по совместительству админы GitHub, создали свои каналы по ЯП Java и Python❗️ Тут они показываю
Senior-разработчики, тимлиды и по совместительству админы GitHub, создали свои каналы по ЯП Java и Python❗️ Тут они показывают как писать код на очень крутом уровне, используя секретные фишки: 📱 PythonРеальный код, полезные советы и интересные задачи для Python-разработчика. 📱 JavaПолезные материалы по Java, которые будут интересны опытному и начинающему прогеру. 📚 Книжный pythonСлив платных курсов, статьи, книги и лучшая теория по всем Python. 🖥 Библиотека JavaСборник всех самых полезных статей и книг по Java. 🖥 MemesСамые жизненные и смешные мемы для любого программиста. P.S. 🔑Сделали каналы открытыми на пару дней, успейте подписаться!

🍿 Как работает сериализация в Java? Java предоставляет разработчикам удобные инструменты для сериализации объектов. Несмотря
🍿 Как работает сериализация в Java?
Java предоставляет разработчикам удобные инструменты для сериализации объектов. Несмотря на то, что они кажутся донельзя примитивными, их внутренняя реализация содержит много интересных моментов. В этой статье мы рассмотрим основы сериализации и некоторые нюансы, связанные с ней. И, конечно, посмотрим, как она работает изнутри.
🔤 Читать статью 🔤 ➡️ Easy Java | #Статьи #Полезно

‼️ ЯИНВЕСТ — вновь доступен ‼️ Знаете ли вы про канал в котором опытный трейдер делиться своими сделками и открыто торгует на
‼️ ЯИНВЕСТ — вновь доступен ‼️ Знаете ли вы про канал в котором опытный трейдер делиться своими сделками и открыто торгует на свою аудиторию? Только за прошлый день заработано +126% 💡 Почему стоит подписаться на этот канал? ⏺Заранее даём инсайды по горячим активам ⏺Проверенные стратегии и чёткие сигналы ⏺Возможность личной консультации с автором канала ⏺Только честный трейдинг – без пустых обещаний! ‼️ Ссылка активна ещё 38 минут ‼️ 👉 https://t.me/+qrkGq6QWHvw3MTgy Пора действовать! 💼

Map: Группировка данных с Collectors.groupingBy() В Java можно группировать данные в Map, используя Collectors.groupingBy(). 📌 Пример:
import java.util.*;
import java.util.stream.Collectors;

public class GroupingExample {
    public static void main(String[] args) {
        List<String> words = List.of("apple", "banana", "avocado", "blueberry", "cherry");

        Map<Character, List<String>> groupedWords = words.stream()
            .collect(Collectors.groupingBy(word -> word.charAt(0)));

        System.out.println(groupedWords);
    }
}

✔️ Вывод:
{a=[apple, avocado], b=[banana, blueberry], c=[cherry]}
🔹 Разбор: ✔️ groupingBy() — группирует данные по ключу. ✔️ word.charAt(0) — используем первую букву слова как ключ. ✔️ В результате получается Map<Character, List<String>>. 💡 Запомни: ✔️ groupingBy() удобно использовать для агрегации данных. ✔️ Можно комбинировать с mapping() для преобразования значений. 📍 Теги: #java #stream #collectors #groupingBy #collections

🟢 Optional: Избегаем NullPointerException В Java класс Optional помогает избежать NullPointerException и делает код читаемым и безопасным. 📌 Пример:
import java.util.Optional;

public class OptionalExample {
    public static void main(String[] args) {
        Optional<String> name = getName();

        // Используем ifPresentOrElse
        name.ifPresentOrElse(
            n -> System.out.println("Имя: " + n),
            () -> System.out.println("Имя отсутствует")
        );
    }

    public static Optional<String> getName() {
        return Math.random() > 0.5 ? Optional.of("Алиса") : Optional.empty();
    }
}
👍 Разбор: ✔️ Optional.of(value) — создаёт Optional, если значение не null. ✔️ Optional.empty() — создаёт пустой Optional. ✔️ ifPresentOrElse() — удобный способ обработать Optional. 💡 Запомни: ✔️ Optional помогает избежать NullPointerException. ✔️Используй ifPresentOrElse() вместо if (obj != null). 📍 Теги: #java #optional #null #bestpractices

Карьерная лестница до Сеньора в айти куда проще, чем кажется на самом деле Одно из простейших направлений сейчас - Java. И чт
Карьерная лестница до Сеньора в айти куда проще, чем кажется на самом деле Одно из простейших направлений сейчас - Java. И чтобы стать сеньором, достаточно лишь регулярно читать канал Easy Java. В нём каждый день опытный разработчик бесплатно делится полезными материалами. Учит оптимизировать код, проходить собеседования и работать с закрытыми глазами с помощью плагинов. Пора обрести профессию с высокой зарплатой: @EasyJava

☕️ Барьеры и модели памяти В этой статье разберём, какие проблемы могут возникнуть при переносе сервисов между архитектурами
☕️ Барьеры и модели памяти
В этой статье разберём, какие проблемы могут возникнуть при переносе сервисов между архитектурами x86/64 и ARM из-за различий в моделях памяти. Узнаем, как барьеры памяти помогают управлять многопоточностью и какие подводные камни могут ожидать разработчиков. Автор подробно объясняет, что такое модели памяти и барьеры памяти, делится личным опытом и предлагает визуально понятные материалы для глубокого понимания темы.
Ссылка на статью ➡️ Easy Java | #Статья

➡️ Easy Java | #мемы

👨‍💻 Comparator: Поиск максимального и минимального значения В Java Comparator позволяет удобно находить минимальные и максимальные значения в коллекциях. 📌 Пример:
import java.util.List;
import java.util.Comparator;

public class ComparatorMinMaxExample {
    public static void main(String[] args) {
        List<Integer> numbers = List.of(10, 25, 3, 47, 8);

        int min = numbers.stream().min(Comparator.naturalOrder()).orElseThrow();
        int max = numbers.stream().max(Comparator.naturalOrder()).orElseThrow();

        System.out.println("Минимум: " + min); // Вывод: 3
        System.out.println("Максимум: " + max); // Вывод: 47
    }
}
👍 Разбор: ✔️ Comparator.naturalOrder() — встроенный компаратор для сортировки по возрастанию. ✔️ min() и max() используют этот компаратор для поиска крайних значений. ✔️ orElseThrow() — выбрасывает исключение, если коллекция пустая. 💡 Запомни: ✔️ Comparator.naturalOrder() — удобный способ поиска min/max. ✔️ Можно использовать Comparator.reverseOrder() для обратной сортировки. 📍 Теги: #java #comparator #min #max #collections

🟢 Lambda: Поиск максимального и минимального значения В лямбда-выражениях удобно находить минимальное и максимальное значения с помощью Comparator. 📌 Пример:
import java.util.List;
import java.util.Comparator;

public class LambdaMinMaxExample {
    public static void main(String[] args) {
        List<Integer> numbers = List.of(10, 25, 3, 47, 8);

        int min = numbers.stream().min((a, b) -> a - b).orElseThrow();
        int max = numbers.stream().max((a, b) -> a - b).orElseThrow();

        System.out.println("Минимум: " + min); // Вывод: 3
        System.out.println("Максимум: " + max); // Вывод: 47
    }
}
👍 Разбор: ✔️ min((a, b) -> a - b) — лямбда-компаратор для поиска минимального значения. ✔️ max((a, b) -> a - b) — аналогично, но для максимального. ✔️ orElseThrow() — выбрасывает исключение, если список пуст. 💡 Запомни: ✔️ Лямбда-выражения позволяют сокращать код и упрощать сравнения. ✔️ Можно заменить (a, b) -> a - b на Integer::compare. 📍 Теги: #java #lambda #comparator #min #max

🟢 Stream API: Группировка данных в Java Stream API позволяет легко группировать элементы коллекций с помощью Collectors.groupingBy(). 📌 Пример:
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class StreamGroupingExample {
    public static void main(String[] args) {
        List<String> names = List.of("Анна", "Иван", "Петр", "Ольга", "Алексей", "Игорь");

        // Группируем имена по первой букве
        Map<Character, List<String>> groupedNames = names.stream()
            .collect(Collectors.groupingBy(name -> name.charAt(0)));

        System.out.println(groupedNames);
        // Вывод: {А=[Анна, Алексей], И=[Иван, Игорь], П=[Петр], О=[Ольга]}
    }
}
👍 Разбор: ✔️ Collectors.groupingBy() — группирует элементы по ключу. ✔️ name.charAt(0) — используем первую букву имени как ключ. ✔️ Возвращается Map<Character, List<String>>, где ключ — первая буква, а значение — список имен. 💡 Запомни: ✔️ groupingBy() — мощный инструмент для группировки данных. ✔️ Можно комбинировать с mapping(), counting() и другими коллекторами. 📍 Теги: #java #streamAPI #collectors #groupingBy #functionalprogramming

Секрет джунов с оффером в Альфа-Банк Хватит. Нет никакого магического секрета. Только мощный стек, гибкое мышление и прокачан
Секрет джунов с оффером в Альфа-Банк Хватит. Нет никакого магического секрета. Только мощный стек, гибкое мышление и прокачанные скилы. Получить свой билет в крупную IT-компанию можно быстрее, если изучить эти бесплатные мануалы от FAANG School. И база постоянно обновляется. Они уже помогли 600+ ученикам устроиться в Сбер, Яндекс, Вконтакте: – Пошаговая RoadMap по Java – Redis - 5 улучшений для твоего пет-проекта – Мануал по Docker. Основные команды и концепции – Микросервисы. Вопросы с собеседований – Шпаргалка с горячими клавишами JetBrains IDE. Ускоришь работу в 10 раз – Desk setup. Подборка аксессуаров для комфортной работы – Шпаргалка по Kafka – Шпаргалка по Spring с разбором паттерна Наблюдатель – Инструкция по работе с Git – Подробный гайд, как найти работу в IT без опыта – Подборка платформ с вакансиями для java-разработчиков - Шпаргалка по основным командам SQL Переходи по ссылке - это твой шаг к моменту, когда амбиции превратятся в реальность. Доступ к библиотек открыт только на 24 часа!

➡️ Easy Java | #мемы