Java Learning
18.5K subscribers
1.62K photos
1 video
3 files
1K links
№ 5079899194

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

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

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

Реклама на бирже - https://telega.in/c/Java_per_month
Download Telegram
Jackson-dataformat-csv

Jackson-dataformat-csv — это библиотека Java, являющаяся модулем расширения популярной библиотеки Jackson для обработки JSON. Она позволяет читать и записывать данные в формате CSV (Comma Separated Values), который широко используется для хранения и обмена табличными данными.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
⚙️ Stream.collect() с Collector.of()

В Java метод Collector.of() позволяет создавать пользовательские коллекции с кастомной логикой для сборки данных. Это даёт полный контроль над процессом объединения элементов.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥2🎄1
👩‍💻 Задача по Java: Удаление дубликатов из списка с сохранением порядка

Напишите метод, который принимает список строк и возвращает новый список, содержащий только уникальные строки, сохраняя их порядок появления.

Пример:

import java.util.List;

public class Main {
public static void main(String[] args) {
List<String> input = List.of("apple", "banana", "apple", "orange", "banana");
List<String> result = removeDuplicates(input);
System.out.println(result);
// Ожидаемый результат: [apple, banana, orange]
}
}


Решение задачи на картинке ☝️

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15
⚙️ Optional.flatMap()

В Java метод Optional.flatMap() позволяет преобразовать значение внутри Optional, возвращая другой Optional. Это особенно полезно для работы с вложенными Optional.

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

Пояснение
⬇️
Переменная x объявлена как final, что делает её неизменяемой после инициализации. Она выводит значение 10. Класс FinalExample содержит переменную value, также объявленную как final, и метод show, который возвращает строку с этим значением. Финальный метод можно вызывать, но его нельзя переопределить в подклассах. Код компилируется и работает без ошибок.


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

В Java метод Collectors.toMap() собирает элементы потока в карту (Map), где вы можете указать функции для ключей и значений. Это удобно для преобразования коллекций в структуру ключ-значение.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🎄2
⚙️ PriorityQueue

В Java класс PriorityQueue предоставляет структуру данных с приоритетной очередью, где элементы извлекаются в порядке их приоритета. По умолчанию элементы сортируются по возрастанию, но можно задать собственный компаратор.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🎄2❤‍🔥1
⚙️ StringBuilder.reverse()

В Java метод StringBuilder.reverse() используется для разворота строки. Это удобный способ изменить порядок символов в строке без создания промежуточных объектов.

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

Что такое Optional в Java, зачем он нужен и как его правильно использовать для работы с потенциально отсутствующими значениями?

Ответ ⬇️
Optional — это контейнер, введённый в Java 8, который используется для представления значений, которые могут быть null. Это помогает избежать проблем с NullPointerException и делает код более читаемым. Optional предоставляет методы, такие как isPresent(), orElse(), и функциональные подходы вроде map() и ifPresent(), чтобы безопасно обрабатывать значения.

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

public class Main {
public static void main(String[] args) {
Optional<String> optionalName = Optional.ofNullable(getName());

// Проверяем, есть ли значение
optionalName.ifPresent(name -> System.out.println("Имя: " + name));

// Задаём значение по умолчанию
String defaultName = optionalName.orElse("Без имени");
System.out.println("Имя по умолчанию: " + defaultName);

// Используем map для преобразования значения
optionalName.map(String::toUpperCase)
.ifPresent(name -> System.out.println("Заглавными: " + name));
}

private static String getName() {
return null; // Или любое строковое значение
}
}


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

В Java метод String.replaceAll() заменяет все вхождения текста, соответствующего регулярному выражению, на заданную строку. Это мощный инструмент для обработки строк.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14
👩‍💻 Задача по Java: Подсчёт частоты слов в строке

Напишите метод, который принимает строку и возвращает Map, где ключи — это слова из строки, а значения — количество их вхождений. Игнорируйте регистр и удаляйте знаки препинания.

Пример:

public class Main {
public static void main(String[] args) {
String text = "Hello, world! Hello Java.";
Map<String, Integer> result = countWordFrequency(text);
System.out.println(result);
// Ожидаемый результат:
// {hello=2, world=1, java=1}
}
}


Решение задачи на картинке ☝️

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

Пояснение
⬇️
Статический вложенный класс Nested может быть создан без экземпляра внешнего класса Outer. Код Outer.Nested nested = new Outer.Nested(); корректен, и метод display выводит "Nested class".


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

В Java метод Math.random() генерирует случайное число с плавающей точкой от 0.0 (включительно) до 1.0 (исключительно). Это базовый способ генерации случайных чисел.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥1
⚙️ Arrays.fill()

В Java метод Arrays.fill() позволяет заполнить массив одним значением или диапазон массива заданным значением. Это удобный способ инициализировать или обновлять данные массива.

Java Learning 👩‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤‍🔥1
⚙️ String.matches()

В Java метод String.matches() проверяет, соответствует ли строка заданному регулярному выражению. Это удобно для проверки формата строк, таких как email, номера телефонов и т.д.

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

Что такое ReentrantLock в Java, какие преимущества он имеет перед ключевым словом synchronized, и как его правильно использовать?

Ответ ⬇️
ReentrantLock — это класс из пакета java.util.concurrent.locks, предоставляющий более гибкий механизм блокировки, чем synchronized. Он поддерживает методы для явного управления блокировками, такие как tryLock() (попытка захвата без ожидания) и lockInterruptibly() (захват с возможностью прерывания). В отличие от synchronized, он позволяет справляться с блокировками вручную и поддерживает более точное управление потоками. Однако неправильное использование может привести к deadlock.

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

public class Main {
private static final ReentrantLock lock = new ReentrantLock();

public static void main(String[] args) {
Thread thread1 = new Thread(Main::criticalSection, "Thread-1");
Thread thread2 = new Thread(Main::criticalSection, "Thread-2");

thread1.start();
thread2.start();
}

private static void criticalSection() {
if (lock.tryLock()) { // Пытаемся захватить блокировку
try {
System.out.println(Thread.currentThread().getName() + " выполняет критическую секцию");
Thread.sleep(1000); // Эмуляция работы
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
} finally {
lock.unlock(); // Обязательно освобождаем блокировку
System.out.println(Thread.currentThread().getName() + " завершил работу");
}
} else {
System.out.println(Thread.currentThread().getName() + " не смог захватить блокировку");
}
}
}


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

В Java метод String.format() позволяет форматировать строки с использованием плейсхолдеров и спецификаторов. Это удобно для создания строк с динамическими данными.

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