Java Ready | Программирование
8.88K subscribers
1.22K photos
61 videos
1 file
600 links
Авторский канал по разработке на Java.
Ресурсы, гайды, задачи, шпаргалки.
Информация ежедневно пополняется!

Автор: @energy_it

Реклама на бирже: https://telega.in/c/java_ready
Download Telegram
Форматированный вывод таблицы через printf!

Иногда нужно вывести таблицу с ровными колонками: имена, цены, количество.

Если просто печатать через System.out.println, всё поедет. Решение — метод printf, который поддерживает форматирование, как в C.

Выводим заголовок таблицы:
System.out.printf("%-10s %-8s %-6s%n", "Товар", "Цена", "Кол-во");
System.out.println("-------------------------");


Добавляем строки с выравниванием:
System.out.printf("%-10s %-8.2f %-6d%n", "Яблоко", 2.5, 10);
System.out.printf("%-10s %-8.2f %-6d%n", "Банан", 3.75, 5);
System.out.printf("%-10s %-8.2f %-6d%n", "Апельсин", 4.1, 12);


Результат в консоли:
Товар      Цена     Кол-во
--------------------------
Яблоко 2.50 10
Банан 3.75 5
Апельсин 4.10 12


🔥 Форматирование делает консольные отчёты и списки аккуратными. Можно выравнивать по левому краю, задавать ширину и количество знаков после запятой.

👉 Java Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
15👍8🔥6
👩‍💻 Создание временных файлов и папок!

Для кеша, логов и тестов часто нужны временные файлы и директории. Делать их вручную неудобно, но в Java есть готовые методы.

В этом посте:
Создадим уникальный файл;

Создадим временную папку;

Автоматически удалим папку и файл.


Таким образом можно легко управлять временными ресурсами без лишнего кода.

👉 Java Ready | #гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1510👍4
Парсинг аргументов через picocli

Сегодня создадим готовый CLI с флагами, параметрами и встроенной справкой (--help, --version) без ручного парсинга.

Подключаем:
implementation "info.picocli:picocli:4.7.6"


Теперь определим саму команду, которая будет выполняться при запуске:
@picocli.CommandLine.Command(
name = "hello",
mixinStandardHelpOptions = true
)
class Hello implements Runnable {


Далее добавим флаг, который управляет выводом:
@picocli.CommandLine.Option(
names = "--upper",
description = "Выводить в верхнем регистре"
)
boolean upper;


Теперь зададим параметр, который нужно будет передать при вызове:
@picocli.CommandLine.Parameters(
paramLabel = "NAME",
description = "Имя пользователя"
)
String name;


И наконец, опишем основную логику работы программы:
public void run() {
var msg = "Hello, " + name;
System.out.println(upper ? msg.toUpperCase() : msg);
}}


🔥 Такой подход экономит время, упрощает код и делает консольные утилиты более профессиональными и удобными для пользователя.

👉 Java Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍43👎1
👩‍💻 Разбираемся с Runtime — прямой доступ к JVM!

Получай объект среды, узнавай число процессоров, следи за памятью, запускай системные процессы и вызывай сборщик мусора. Стандартный API который даёт очень много контроля.

👉 Java Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥137👍4👎1
Парсинг HTML через Jsoup!

Собираем данные со страниц: тянем заголовки и ссылки, удобно для ботов, парсеров и быстрых утилит.

Устанавливаем библиотеку:
implementation "org.jsoup:jsoup:1.17.2"


Извлекаем заголовки h1..h3:
var url = "https://java.com";
var doc = org.jsoup.Jsoup.connect(url).get();

doc.select("h1, h2, h3").forEach(h -> {
System.out.println(h.tagName() + ": " + h.text());
});
// h1: Example Domain
// h2:


Собираем ссылки с текстами:
doc.select("a[href]").forEach(a -> {
var href = a.attr("abs:href"); // абсолютная ссылка
var text = a.text();
System.out.println(text + " -> " + href);
});


Массовый парсинг нескольких страниц:
var urls = java.util.List.of(
"https://example.com",
"https://example.org"
);
for (var u : urls) {
var d = org.jsoup.Jsoup.connect(u).get();
System.out.println("== " + u + " ==");
d.select("title").forEach(t -> System.out.println(t.text()));
}


🔥 Быстро вытягиваем метаданные, заголовки и ссылки: идеально для агрегаторов, мониторинга и автосборки контента.

👉 Java Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
13👍5🔥4
👩‍💻 Поворот квадратной матрицы на 90° по часовой!

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

В этой задаче:
Задаём квадратную матрицу N×N;

Меняем местами элементы относительно главной диагонали;

Разворачиваем каждую строку.


Так поворот выполняется на месте что эффективно и удобно в определённых случаях.

👉 Java Ready | #задача
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19👍73🤝1
Считаем количество созданных объектов!

Иногда нужно отследить, сколько экземпляров класса было создано. Для этого используют статическое поле, общее для всех объектов.

Создаём класс с счётчиком:
class User {
static int count = 0;
// общее поле для всех экземпляров


Увеличиваем значение при создании:
User() {
count++;
}


Проверяем результат:
public static void main(String[] args) {
new User();
new User();
new User();
System.out.println("Создано объектов: " + User.count);
}}


🔥 Переменная static принадлежит классу, а не объекту. Благодаря этому можно считать экземпляры без хранения списка..

👉 Java Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍4🔥3