Java Portal | Программирование
11.8K subscribers
1.49K photos
112 videos
45 files
1.54K links
Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика

Связь: @devmangx

РКН: https://clck.ru/3H4WUg
Download Telegram
💡 Java I/O: используйте Files.copy(), чтобы скопировать файл одной строкой.

Отлично подходит для резервных копий: data.csvdata.csv.bak
Используйте REPLACE_EXISTING, если целевой файл уже может существовать
Работает с Path, поэтому код переносим между разными ОС

#Java #Files

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
2
💡 Используйте Optional.orElseThrow(), когда отсутствие значения — это ошибка.

orElse(null)NPE возникает позже, далеко от места поиска значения
orElseThrow() останавливает выполнение в месте возникновения проблемы и выбрасывает понятное исключение
Передавайте Supplier, чтобы в сообщении было указано, какое именно значение отсутствует

#Java #Optional

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
8
Для null-safe проверки равенства лучше использовать Objects.equals(a, b).

a.equals(b) выбросит NullPointerException, если a равен null
Objects.equals корректно обрабатывает null с обеих сторон
Оба значения nulltrue; одно значение nullfalse; иначе вызывается a.equals(b)

#Java #Objects

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🤣1
Используйте Comparator.nullsFirst() или Comparator.nullsLast(), если ключи сортировки могут быть null.

comparing(User::getName) выбросит NullPointerException, если getName() вернёт null.
Оберните компаратор в nullsFirst() или nullsLast(), чтобы явно задать порядок для null.
Для сортировки по нескольким полям добавляйте thenComparing().

#Java #Comparator

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍2
💡 Используй Instant.truncatedTo(...), когда нужно сравнивать время с точностью до дня, часа или минуты.

Instant.equals() сравнивает значение целиком, поэтому разница даже в наносекундах даст false
truncateTo(ChronoUnit.DAYS) отбрасывает более мелкие единицы времени
Удобно для проверок вроде «тот же день» или «тот же час»

#Java #Time

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
Используйте Stream.peek() только для отладки, а не для реальной логики.

peek() выполняется как побочный эффект, поэтому его вызов легко не заметить или вообще потерять при выполнении Stream pipeline.
Для намеренной обработки данных лучше использовать map() или forEach().

#Java #Streams

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
1
Используйте Files.isSameFile(path1, path2), чтобы проверить, указывают ли два пути на один и тот же файл. Метод также учитывает симлинки.

Он проверяет, ссылаются ли два объекта Path на один и тот же реальный файл в файловой системе.

#Java #JavaDev

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Используйте ReentrantReadWriteLock, когда операций чтения много, а записи происходят редко.

Несколько потоков могут одновременно удерживать блокировку чтения
Для записи требуется эксклюзивная блокировка
При преобладании чтения пропускная способность выше, чем с одной эксклюзивной блокировкой

#Java #Concurrency

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
3
Используйте Files.isSameFile(a, b), чтобы проверить, указывают ли два пути на один и тот же файл.

Path.equals сравнивает только текстовое представление пути.
isSameFile проверяет реальный файл и учитывает симлинки.

#Java #Files

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
Используйте Collectors.summarizingInt(), чтобы за один проход получить количество элементов, сумму, минимум, максимум и среднее значение.

Так не придётся несколько раз прогонять один и тот же поток данных.

Метод возвращает объект IntSummaryStatistics.

Для long и double есть аналогичные методы: summarizingLong() и summarizingDouble().

#Java #Streams

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👀1
Сопоставление с образцом для instanceof: переменную можно объявить прямо в проверке.

Старый подход: сначала instanceof, затем отдельное приведение типа.

Новый подход: if (obj instanceof Dog d) — переменная d сразу готова к использованию.

При этом d существует только там, где условие проверки истинно.

#Java #PatternMatching

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM