Easy Java
Ir al canal en Telegram
Лучшие обучающие материалы и другие полезности для Java-разработчиков. Сотрудничество: @heywan_n1 Цены: @heywan_media Реклама на бирже: https://telega.in/c/+r8kkGSypBY84MmIy
Mostrar más5 219
Suscriptores
-124 horas
-237 días
-8730 días
Archivo de publicaciones
5 219
❌ Ошибка: Сравнение строк через == вместо .equals()
🚨 Одна из самых частых ошибок в Java — сравнение строк через ==.
Ошибка ⚠️ :
public class StringComparison {
public static void main(String[] args) {
String str1 = "Hello";
String str2 = "Hello";
String str3 = new String("Hello");
System.out.println(str1 == str2); // ✅ true (оба строки из пула строк)
System.out.println(str1 == str3); // ❌ false (разные объекты в памяти)
}
}
Что произошло❓
🚨 == сравнивает ссылки в памяти, а не содержимое строк!
✔️ Правильный вариант:
System.out.println(str1.equals(str2)); // true
System.out.println(str1.equals(str3)); // true
👍 Разбор:
✔️ == проверяет ссылки, а не содержимое строк.
✔️ Используй .equals() для сравнения значений строк.
✔️ intern() можно использовать для приведения строк в пул строк.
💡 Запомни:
✔️ == сравнивает ссылки.
✔️ .equals() сравнивает содержимое.
✔️ intern() делает строки из new String() частью пула строк.
❓ А вы знали об этом?
📍 Теги: #java #mistakes #bestpractices #string5 219
⚡️ RECURA - полезный канал для разработчиков и инженеров.
Канал ведёт DevOps-инженер, который ежедневно публикует:
— код, повышающий эффективность разработки
— лайфхаки и трюки для Bash и Linux
— полезные утилиты для работы и отдыха
— советы по информационной безопасности
— актуальные новости из мира технологий и нейросетей
Подпишись на @recura_tech, чтобы каждый день открывать для себя что-то новое и быть востребованным специалистом.
5 219
👨💻 Задача: Найти два числа в массиве, сумма которых равна целевому значению
📌 Условие:
Дан массив целых чисел и целевое число target. Нужно найти два числа, сумма которых равна target, и вернуть их индексы.
Гарантируется, что решение всегда существует.
✔️ Примеры:
Input: nums = [2, 7, 11, 15], target = 9
Output: [0, 1] // (2 + 7 = 9)
Input: nums = [3, 2, 4], target = 6
Output: [1, 2] // (2 + 4 = 6)
📌 Решение:
import java.util.HashMap;
import java.util.Map;
public class TwoSum {
public static int[] findTwoSum(int[] nums, int target) {
Map<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
int complement = target - nums[i];
if (map.containsKey(complement)) {
return new int[]{map.get(complement), i};
}
map.put(nums[i], i);
}
throw new IllegalArgumentException("Решение не найдено");
}
public static void main(String[] args) {
int[] nums = {2, 7, 11, 15};
int target = 9;
int[] result = findTwoSum(nums, target);
System.out.println("[" + result[0] + ", " + result[1] + "]");
}
}
👍 Разбор:
✔️ Используем HashMap для хранения чисел и их индексов.
✔️ Одним проходом по массиву за O(n) проверяем, есть ли нужное число.
✔️ Если target - nums[i] уже есть в map, возвращаем пару индексов.
💡 Запомни:
✔️ HashMap даёт поиск за O(1), что делает алгоритм эффективным.
✔️ Использование map.containsKey() позволяет избежать вложенных циклов.
❓ А вы знали об этом?
📍 Теги: #java #tasks #algorithms #hashmap5 219
Ошибка: Автоупаковка (Autoboxing) и производительность.
В Java Integer, Double и другие обёртки примитивов (wrapper classes) используют автоупаковку (autoboxing), которая может снижать производительность.
❌ Ошибка:
public class AutoboxingExample {
public static void main(String[] args) {
Integer sum = 0; // ❌ Используем обёртку вместо int
for (int i = 0; i < 1_000_000; i++) {
sum += i; // ❌ Автоупаковка на каждой итерации (int → Integer)
}
System.out.println(sum);
}
}
Проблема:
🚨 На каждой итерации создаётся новый объект Integer, что замедляет программу!
✔️ Правильный вариант:
int sum = 0; // Используем int
for (int i = 0; i < 1_000_000; i++) {
sum += i;
}
System.out.println(sum);
👍 Разбор:
✔️ Автоупаковка создаёт новые объекты, что увеличивает потребление памяти и замедляет код.
✔️ Используй примитивные типы (int, double) там, где не нужна обёртка.
💡 Запомни:
✔️ int быстрее, чем Integer.
✔️ Избегай ненужной автоупаковки в циклах.
❓ А вы знали об этом?
📍 Теги: #java #autoboxing #performance #mistakes #bestpractices5 219
— «ИИ заменит программистов»
— «Без вышки в IT делать нечего»
— «IT - это пузырь»
Все слышали эти фразы? Спешу расстроить — это пи*$@ж!
Айтишник из «VISION» убивает стереотипы и даёт самую нужную информацию для входа в айти. Никакой воды, всё по делу, остаётся только выбрать нужное направление:
➖ Backend (Python, Java, C/C++, C#, Go, SQL)
➖ Frontend (JavaScript, HTML, CSS, React, Vue.js)
➖ ИБ & Хакинг, DevOps, Data Science, ML
Самобытно и с юмором о программировании — https://t.me/+lpKq4-8wKpxkZWQ5
5 219
Ошибка: 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 #bestpractices5 219
🟢 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 #bestpractices5 219
👩💻 Java - Полный Курс по Java
В этом видеокурсе автор пошагово и простым языком ознакомит вас с важными концепциями языка Java. Преподаватель на практике показывает — как, что и зачем делать, прямо в редакторе кода.🔤 Ссылка на источник 🔤 ➡ Easy Java |#Видео #Курсы
5 219
🎉 Розыгрыш 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 ещё удобнее!
Не упустите шанс!
Подписывайтесь на канал «Цифровая кухня», чтобы не пропустить важные новости, полезные материалы и, конечно, результаты розыгрыша.
5 219
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 #bestpractices5 219
🚀 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
#реклама
О рекламодателе
5 219
Senior-разработчики, тимлиды и по совместительству админы GitHub, создали свои каналы по ЯП Java и Python❗️
Тут они показывают как писать код на очень крутом уровне, используя секретные фишки:
📱 Python — Реальный код, полезные советы и интересные задачи для Python-разработчика.
📱 Java — Полезные материалы по Java, которые будут интересны опытному и начинающему прогеру.
📚 Книжный python — Слив платных курсов, статьи, книги и лучшая теория по всем Python.
🖥 Библиотека Java — Сборник всех самых полезных статей и книг по Java.
🖥 Memes — Самые жизненные и смешные мемы для любого программиста.
P.S. 🔑Сделали каналы открытыми на пару дней, успейте подписаться!
5 219
🍿 Как работает сериализация в Java?
Java предоставляет разработчикам удобные инструменты для сериализации объектов. Несмотря на то, что они кажутся донельзя примитивными, их внутренняя реализация содержит много интересных моментов. В этой статье мы рассмотрим основы сериализации и некоторые нюансы, связанные с ней. И, конечно, посмотрим, как она работает изнутри.🔤 Читать статью 🔤 ➡️ Easy Java | #Статьи #Полезно
5 219
‼️ ЯИНВЕСТ — вновь доступен ‼️
Знаете ли вы про канал в котором опытный трейдер делиться своими сделками и открыто торгует на свою аудиторию?
Только за прошлый день заработано +126% ✅
💡 Почему стоит подписаться на этот канал?
⏺Заранее даём инсайды по горячим активам
⏺Проверенные стратегии и чёткие сигналы
⏺Возможность личной консультации с автором канала
⏺Только честный трейдинг – без пустых обещаний!
‼️ Ссылка активна ещё 38 минут ‼️
👉 https://t.me/+qrkGq6QWHvw3MTgy
Пора действовать! 💼
5 219
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
¡Ya disponible! Investigación de Telegram 2025 — los principales insights del año 
