Java Streams:
✅ Полезно при работе со
✅
✅ Отлично подходит для выборки данных или получения первых N значений
#Java #Streams
👉 Java Portal
limit(n) превращает бесконечный поток в конечный.✅ Полезно при работе со
Stream.iterate() / generate() — они могут создавать бесконечные потоки✅
limit(5) означает: «взять первые 5 элементов и остановиться»✅ Отлично подходит для выборки данных или получения первых N значений
#Java #Streams
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7
💡 Java I/O: используйте
✅ Отлично подходит для резервных копий:
✅ Используйте
✅ Работает с
#Java #Files
👉 Java Portal
Files.copy(), чтобы скопировать файл одной строкой.✅ Отлично подходит для резервных копий:
data.csv → data.csv.bak✅ Используйте
REPLACE_EXISTING, если целевой файл уже может существовать✅ Работает с
Path, поэтому код переносим между разными ОС#Java #Files
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
💡 Используйте
✅
✅
✅ Передавайте
#Java #Optional
👉 Java Portal
Optional.orElseThrow(), когда отсутствие значения — это ошибка.✅
orElse(null) → NPE возникает позже, далеко от места поиска значения✅
orElseThrow() останавливает выполнение в месте возникновения проблемы и выбрасывает понятное исключение✅ Передавайте
Supplier, чтобы в сообщении было указано, какое именно значение отсутствует#Java #Optional
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8
Для null-safe проверки равенства лучше использовать
✅
✅
✅ Оба значения
#Java #Objects
👉 Java Portal
Objects.equals(a, b).✅
a.equals(b) выбросит NullPointerException, если a равен null✅
Objects.equals корректно обрабатывает null с обеих сторон✅ Оба значения
null → true; одно значение null → false; иначе вызывается a.equals(b)#Java #Objects
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🤣1
Используйте
✅
✅ Оберните компаратор в
✅ Для сортировки по нескольким полям добавляйте
#Java #Comparator
👉 Java Portal
Comparator.nullsFirst() или Comparator.nullsLast(), если ключи сортировки могут быть null.✅
comparing(User::getName) выбросит NullPointerException, если getName() вернёт null.✅ Оберните компаратор в
nullsFirst() или nullsLast(), чтобы явно задать порядок для null.✅ Для сортировки по нескольким полям добавляйте
thenComparing().#Java #Comparator
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍2
💡 Используй
✅
✅
✅ Удобно для проверок вроде «тот же день» или «тот же час»
#Java #Time
👉 Java Portal
Instant.truncatedTo(...), когда нужно сравнивать время с точностью до дня, часа или минуты.✅
Instant.equals() сравнивает значение целиком, поэтому разница даже в наносекундах даст false✅
truncateTo(ChronoUnit.DAYS) отбрасывает более мелкие единицы времени✅ Удобно для проверок вроде «тот же день» или «тот же час»
#Java #Time
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4
Используйте
✅
✅ Для намеренной обработки данных лучше использовать
#Java #Streams
👉 Java Portal
Stream.peek() только для отладки, а не для реальной логики.✅
peek() выполняется как побочный эффект, поэтому его вызов легко не заметить или вообще потерять при выполнении Stream pipeline.✅ Для намеренной обработки данных лучше использовать
map() или forEach().#Java #Streams
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Используйте
✅ Он проверяет, ссылаются ли два объекта
#Java #JavaDev
👉 Java Portal
Files.isSameFile(path1, path2), чтобы проверить, указывают ли два пути на один и тот же файл. Метод также учитывает симлинки.Path на один и тот же реальный файл в файловой системе.#Java #JavaDev
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Используйте
✅ Несколько потоков могут одновременно удерживать блокировку чтения
✅ Для записи требуется эксклюзивная блокировка
✅ При преобладании чтения пропускная способность выше, чем с одной эксклюзивной блокировкой
#Java #Concurrency
👉 Java Portal
ReentrantReadWriteLock, когда операций чтения много, а записи происходят редко.✅ Несколько потоков могут одновременно удерживать блокировку чтения
✅ Для записи требуется эксклюзивная блокировка
✅ При преобладании чтения пропускная способность выше, чем с одной эксклюзивной блокировкой
#Java #Concurrency
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Используйте
✅
✅
#Java #Files
👉 Java Portal
Files.isSameFile(a, b), чтобы проверить, указывают ли два пути на один и тот же файл.✅
Path.equals сравнивает только текстовое представление пути.✅
isSameFile проверяет реальный файл и учитывает симлинки.#Java #Files
Please open Telegram to view this post
VIEW IN TELEGRAM
Используйте
Так не придётся несколько раз прогонять один и тот же поток данных.
Метод возвращает объект
Для
#Java #Streams
👉 Java Portal
Collectors.summarizingInt(), чтобы за один проход получить количество элементов, сумму, минимум, максимум и среднее значение.Так не придётся несколько раз прогонять один и тот же поток данных.
Метод возвращает объект
IntSummaryStatistics.Для
long и double есть аналогичные методы: summarizingLong() и summarizingDouble().#Java #Streams
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥9👍1👀1
Сопоставление с образцом для
Старый подход: сначала
Новый подход:
При этом d существует только там, где условие проверки истинно.
#Java #PatternMatching
👉 Java Portal
instanceof: переменную можно объявить прямо в проверке.Старый подход: сначала
instanceof, затем отдельное приведение типа.Новый подход:
if (obj instanceof Dog d) — переменная d сразу готова к использованию.При этом d существует только там, где условие проверки истинно.
#Java #PatternMatching
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4❤1
Java: поверхностное клонирование копирует только сам объект, а вложенные объекты остаются общими.
Глубокое клонирование дополнительно копирует и вложенные поля.
Если ссылки остаются общими, изменение вложенного объекта в одной копии будет видно и в другой.
#Java #SoftwareEngineering
👉 Java Portal
super.clone() сам по себе создаёт поверхностную копию.Глубокое клонирование дополнительно копирует и вложенные поля.
Если ссылки остаются общими, изменение вложенного объекта в одной копии будет видно и в другой.
#Java #SoftwareEngineering
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
💡 Java — не стоит считать, что десятичным разделителем всегда будет точка.
✅ Шаблоны вроде
✅ Нужные разделители можно задать через
✅ В Италии число будет выглядеть как
#Java #JavaDev
👉 Java Portal
✅ Шаблоны вроде
#,###.## всё равно используют символы, зависящие от локали.✅ Нужные разделители можно задать через
DecimalFormatSymbols(locale).✅ В Италии число будет выглядеть как
1.234,56, а в США — 1,234.56.#Java #JavaDev
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍1
💡 Java: если переопределяете
✅ Равные объекты должны иметь одинаковый hash code
✅ Иначе
#Java #OOP
👉 Java Portal
equals(), всегда переопределяйте и hashCode().✅ Равные объекты должны иметь одинаковый hash code
✅ Иначе
HashSet и HashMap могут не находить совпадения#Java #OOP
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍4
Java Stream API tip: группируйте объекты по нужному полю без написания циклов вручную.
Удобно для отчётов, dashboards и aggregation logic.
#Java #JavaTips #StreamAPI #BackendDevelopment
👉 Java Portal
Удобно для отчётов, dashboards и aggregation logic.
#Java #JavaTips #StreamAPI #BackendDevelopment
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6
Java: рефакторьте legacy code небольшими шагами — тесты должны быть вашей страховкой.
✅ Сначала добавьте тест, который фиксирует текущее поведение
✅ Измените что-то одно, запустите тесты и повторите
✅ Избегайте масштабных переписываний кода без test coverage
#Java #LegacyCode
👉 Java Portal
✅ Сначала добавьте тест, который фиксирует текущее поведение
✅ Измените что-то одно, запустите тесты и повторите
✅ Избегайте масштабных переписываний кода без test coverage
#Java #LegacyCode
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍1
Java tip:
Более чистый код с меньшим количеством boilerplate.
#java #coding
👉 Java Portal
isBlank() > isEmpty()Более чистый код с меньшим количеством boilerplate.
#java #coding
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔6❤3🤣1
💡 Java: Checked vs Unchecked Exceptions
✅ Checked (
✅ Unchecked (
✅ Используйте checked exceptions только для ошибок, после которых возможно восстановление
#Java #ErrorHandling
👉 Java Portal
✅ Checked (
IOException): compiler требует обработать exception через try/catch или объявить его через throws✅ Unchecked (
RuntimeException): обработка на этапе компиляции не требуется✅ Используйте checked exceptions только для ошибок, после которых возможно восстановление
#Java #ErrorHandling
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
💡 Java: не раскрывайте изменяемое внутреннее состояние — возвращайте DTO или копии
✅ Getters, возвращающие изменяемые коллекции напрямую, могут быть опасны
✅ Вызывающий код сможет изменить внутреннее состояние объекта без вашего контроля
✅ Предпочитайте DTO,
#Java #Encapsulation
👉 Java Portal
✅ Getters, возвращающие изменяемые коллекции напрямую, могут быть опасны
✅ Вызывающий код сможет изменить внутреннее состояние объекта без вашего контроля
✅ Предпочитайте DTO,
List.copyOf() или unmodifiable views#Java #Encapsulation
Please open Telegram to view this post
VIEW IN TELEGRAM