Pascal4eg / Java

 Java | Фишки и трюки

Использование интерфейса Callable вместе с классом Future для выполнения асинхронных задач и получения их результата

ExecutorService executor = null;
try {
    executor = Executors.newFixedThreadPool(1);
    Future<Integer> futureResult = executor.submit(() -> {
        // Выполнение сложной вычислительной задачи
        int result = 0;
        for (int i = 0; i < 100; i++) {
            result += i;
            Thread.sleep(100);
        }
        return result;
    });

    // Другие действия, выполняемые параллельно
    // Ожидание завершения асинхронной задачи и получение результата
    Integer result = futureResult.get();
    System.out.println("Результат: " + result);
} catch (InterruptedException | ExecutionException e) {
    e.printStackTrace();
} finally {
    if (executor != null) executor.shutdown();
}

...

Читать дальше

Параллельное выполнение задач с использованием ExecutorService

ExecutorService - это интерфейс, который предоставляет удобный способ для управления параллельным выполнением задач. Он предоставляет пул потоков для выполнения задач и управляет их жизненным циклом:

...

Читать дальше

Использование лямбда-выражений для упрощения написания анонимных классов

Как полезную фишку в Java можно рассмотреть использование лямбда-выражений для упрощения написания анонимных классов. Например, использование лямбда-выражения для выполнения операции над элементами коллекции:

...

Читать дальше

Использование StringBuilder для эффективной конкатенации строк

public class StringBuilderExample {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < 10; i++) {
            sb.append("строка ").append(i).append("\n");
        }
        String result = sb.toString();
        System.out.println(result);
    }
}

...

Читать дальше

Использование интерфейсов для множественного наследования

В данном коде используются интерфейсы для реализации множественного наследования. Класс MyClass реализует два интерфейса Printable и Showable, и поэтому класс может использовать методы, определенные в обоих интерфейсах. Это позволяет создавать гибкие и модульные программы, используя механизм интерфейсов в Java.

...

Читать дальше

Создание итератора для пользовательского класса

Этот код позволяет создать итератор для пользовательского класса CustomClass. Итератор позволяет перебирать элементы массива elements и использовать их в цикле for-each.

...

Читать дальше

Array vs ArrayList

Выбор между Array и ArrayList зависит от специфики задачи на Java, которую требуется решить.

📌 Помните о следующих особенностях этих типов:

• Array имеет фиксированный размер и память для него выделяется в момент объявления, а размер ArrayLists может динамически изменяться.

...

Читать дальше

JSON

JSON – невероятно удобный и полезный формат для хранения и обмена данными. Java полностью поддерживает его.

Сериализовать данные можно так:

JSONObject author = new JSONObject();
author.put("name", "J. K. Rowling");
author.put("numberOfBooks", 22);

JSONArray books = new JSONArray();
books.put("Harry Potter and the Philosopher's Stone");
books.put("Harry Potter and the Chamber of Secrets");
books.put("Harry Potter and the Prisoner of Azkaban");

author.put("books", books);
System.out.print(author);

...

Читать дальше

Методы и конструкторы в enum

Перечисления (enum) — это классы Java, определяющие наборы констант. Самый простой enum выглядит так:

public enum Vehicle { CAR, BUS, BICYCLE, SCOOTER }

...

Читать дальше

Использование аннотаций

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

...

Читать дальше