Java Learning
18.9K subscribers
1.61K photos
1 video
3 files
986 links
№ 5079899194

Обучающий канал по Java

Ссылка для друга - https://t.iss.one/+ZEYYht6-46w5MDM6

По всем вопросам @mascarov_valentin

Реклама на бирже - https://telega.in/c/Java_per_month
Download Telegram
🤔 Как это работает? — Паттерн Singleton в Java

Singleton — это паттерн проектирования, который гарантирует, что у класса есть только один экземпляр. Он часто используется для управления ресурсами, такими как подключения к базе данных. Давайте разберём реализацию.

➡️ Как это работает:

Поле instance хранит единственный экземпляр класса.
Конструктор private, чтобы предотвратить создание новых экземпляров.
Метод getInstance() создаёт экземпляр только при первом вызове (ленивая инициализация).

Развернутый аналог:
// Экземпляр можно также создавать сразу, а не лениво:
private static final Singleton instance = new Singleton();


Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
⚙️ Files.createTempFile()

Метод Files.createTempFile() из пакета java.nio.file используется для создания временного файла, который можно использовать для временного хранения данных. Это удобно для работы с временными данными, которые не нужно сохранять надолго.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
⚙️ MethodHandles.insertArguments()

Метод MethodHandles.insertArguments() в Java позволяет создавать новый MethodHandle, в котором заранее фиксируются значения для некоторых аргументов метода. Это полезно для частичного применения аргументов к методам и упрощения их вызова.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ MethodHandles.arrayElementGetter()

Метод MethodHandles.arrayElementGetter() позволяет создать MethodHandle, который получает элементы из массива. Это полезно для работы с массивами через рефлексию.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
⚙️ Files.copy()

Метод Files.copy() позволяет копировать содержимое файлов или потоков данных.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
⚙️ Files.probeContentType()

Метод Files.probeContentType() определяет тип содержимого файла (MIME type). Это полезно для работы с различными типами данных в файлах.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
Вопрос на собеседовании

Что такое Optional.empty(), и как оно помогает избежать null в Java?

Ответ ⬇️
Optional.empty() — это метод в классе Optional, который возвращает пустой объект Optional, указывающий на отсутствие значения. Вместо использования null, Optional помогает явно работать с отсутствующими значениями, минимизируя вероятность NullPointerException. Он предоставляет методы, такие как orElse, orElseThrow, и ifPresent, для управления ситуациями, когда значение отсутствует.

Пример использования ⚙️
import java.util.Optional;

public class Main {
public static void main(String[] args) {
Optional<String> optional = Optional.empty();

// Проверка наличия значения
System.out.println(optional.orElse("Значение отсутствует")); // Значение отсутствует

// Работа с методом ifPresent
optional.ifPresent(value -> System.out.println("Значение: " + value));
}
}


Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
⚙️ Stream.flatMapToInt()

Метод Stream.flatMapToInt() используется для преобразования элементов потока в другой поток примитивов int. Это удобно для обработки вложенных структур данных и работы с примитивами.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
🚫 Антипаттерн недели: Использование явных циклов для поиска

Вместо того чтобы использовать явные циклы для поиска элемента в коллекции, Java предоставляет методы для упрощения и оптимизации таких операций, особенно с использованием Stream API.

✔️ Используйте Stream API для лаконичного и производительного поиска элементов.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8😁1
Что будет выведено при выполнении кода?

Пояснение
⬇️
Метод append добавляет " World" в конец строки, а insert вставляет запятую на позицию 5 (после Hello). Результирующая строка: Hello, World. Код выполняется корректно.


Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
⚙️ Files.isReadable()

Метод Files.isReadable() из java.nio.file проверяет, доступен ли файл для чтения. Это полезно для предварительной проверки перед открытием файла.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
⚙️ Collectors.partitioningBy

Метод partitioningBy из класса Collectors используется для разделения элементов потока на две группы, основываясь на предикате. Он возвращает карту с двумя списками: одна группа удовлетворяет предикату, другая — нет.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍8🔥5
⚙️ MethodHandle.invokeExact()

Метод MethodHandle.invokeExact() из пакета java.lang.invoke позволяет вызывать метод или конструктор через ссылку MethodHandle. Это мощный инструмент для динамического вызова методов с высокой производительностью.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
⚙️ Stream.generate()

Метод Stream.generate() используется для создания бесконечного потока элементов, генерируемых функцией. Это полезно для создания потоков случайных данных, шаблонов или повторяющихся значений.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
⚙️ MethodHandles.privateLookupIn

Метод MethodHandles.privateLookupIn позволяет получить доступ к приватным методам, полям и конструкторам класса через MethodHandle. Это мощный и редкий инструмент для работы с закрытыми членами классов.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
🚫 Антипаттерн недели: Использование String вместо StringBuilder при конкатенации в цикле

В Java строки (String) неизменяемы. При каждой конкатенации через + создаётся новый объект, что приводит к избыточным затратам памяти и снижает производительность, особенно в циклах.

✔️ Используйте StringBuilder, который изменяем и работает быстрее при частых операциях с текстом.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
⚙️ Files.mismatch()

Метод Files.mismatch(), добавленный в Java 12, позволяет сравнить два файла и найти позицию первого несовпадающего байта. Если файлы идентичны, метод возвращает -1. Это полезно для проверки целостности данных или сравнения файлов.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
⚙️ LockSupport.park()

Метод LockSupport.park() позволяет приостановить выполнение потока без использования synchronized или wait(). Это полезно для низкоуровневой синхронизации потоков.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4