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

Связь: @devmangx

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

✅ Отлично подходит для резервных копий: data.csv → data.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 с обеих сторон
✅ Оба значения null → true; одно значение null → false; иначе вызывается 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
🔥4
Используйте 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
👍6
Используйте 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
1🔥9👍1👀1