Метод putAll()
Метод
Например, если у вас есть две карты, содержащие данные, и вам нужно объединить их для выполнения операций на полном объеме данных, метод
#для_начинающих
Метод
putAll() принадлежит интерфейсу Map и используется для добавления всех элементов из одной карты (Map) в другую. Этот метод принимает в качестве аргумента другую карту и добавляет все ее записи в вызывающую карту.Например, если у вас есть две карты, содержащие данные, и вам нужно объединить их для выполнения операций на полном объеме данных, метод
putAll() предоставляет простой способ объединения.#для_начинающих
👍13
Метод startsWith()
Метод
Этот метод возвращает
#для_начинающих
Метод
startsWith() является частью класса String и используется для проверки того, начинается ли строка с определенной подстроки. Вот сигнатура метода:public boolean startsWith(String prefix)
Этот метод возвращает
true, если вызывающая строка начинается с указанного префикса (prefix), и false в противном случае.#для_начинающих
👍10
Метод compareTo()
Метод
где
— Отрицательное число указывает на то, что текущий объект меньше, чем объект
— Ноль указывает на то, что текущий объект равен объекту
— Положительное число указывает на то, что текущий объект больше, чем объект
#для_начинающих
Метод
compareTo() используется для сравнения двух объектов. Обычно он применяется к объектам, реализующим интерфейс Comparable, чтобы определить их относительный порядок. Вот как обычно выглядит сигнатура метода compareTo():int compareTo(T obj)
где
T — это тип объектов, с которыми сравнивается текущий объект. Метод возвращает отрицательное целое число, ноль или положительное целое число в зависимости от того, как текущий объект сравнивается с переданным объектом obj.— Отрицательное число указывает на то, что текущий объект меньше, чем объект
obj.— Ноль указывает на то, что текущий объект равен объекту
obj.— Положительное число указывает на то, что текущий объект больше, чем объект
obj.#для_начинающих
👍15
Single Responsibility Principle
Принцип единственной ответственности (Single Responsibility Principle, SRP) является одним из принципов SOLID, предложенных Робертом Мартином. Этот принцип гласит, что у класса должна быть только одна причина для изменения. Иными словами, класс должен выполнять только одну ответственность.
Применительно к Java это означает, что класс должен быть спроектирован так, чтобы он занимался только одним аспектом функциональности. Если у класса есть более одной обязанности, его стоит разделить на несколько классов, каждый из которых будет отвечать за свою конкретную обязанность.
#для_продвинутых
Принцип единственной ответственности (Single Responsibility Principle, SRP) является одним из принципов SOLID, предложенных Робертом Мартином. Этот принцип гласит, что у класса должна быть только одна причина для изменения. Иными словами, класс должен выполнять только одну ответственность.
Применительно к Java это означает, что класс должен быть спроектирован так, чтобы он занимался только одним аспектом функциональности. Если у класса есть более одной обязанности, его стоит разделить на несколько классов, каждый из которых будет отвечать за свою конкретную обязанность.
#для_продвинутых
👍12❤3🔥1🤔1
Please open Telegram to view this post
VIEW IN TELEGRAM
❤18😁12👍4
Phaser
С
#для_продвинутых
Phaser очень похож на более известную CountDownLatch. Однако он предоставляет некоторые дополнительные функции. Он позволяет нам установить динамическое количество потоков, которые должны ждать перед продолжением выполнения. С
Phaser определенное количество потоков должно дождаться барьера, прежде чем перейти к следующей фазе выполнения. Благодаря этому мы можем координировать несколько фаз выполнения.#для_продвинутых
👍8
StringJoiner
В примере выше создается объект
#для_продвинутых
StringJoiner — это класс в Java, введенный в Java 8, который предоставляет удобный способ объединения строк с использованием разделителя. Этот класс обеспечивает более гибкий и выразительный способ объединения строк, чем использование обычных конкатенаций строк или метода StringBuilder.В примере выше создается объект
StringJoiner с разделителем ",". Затем добавляются три элемента ("Apple", "Banana", "Orange"). В результате вызова метода toString() получается строка, в которой элементы объединены с использованием заданного разделителя.#для_продвинутых
👍17
CountDownLatch
#для_продвинутых
CountDownLatch — это синхронизационный механизм, предоставляемый пакетом java.util.concurrent, который позволяет одному или нескольким потокам ждать, пока определенное количество операций завершится, прежде чем они смогут продолжить свою работу. Он полезен в ситуациях, когда нужно дождаться завершения нескольких параллельных задач, прежде чем продолжить выполнение кода.CountDownLatch работает по принципу счетчика, который уменьшается с каждым вызовом метода countDown(). Когда счетчик достигает нуля, все ожидающие потоки могут продолжить свою работу.#для_продвинутых
👍10❤1
Чем отличаются операторы & и &&, | и ||?
Anonymous Quiz
13%
Операторов & и | в Java нет
45%
& и | - унарные операторы, && и || - бинарные
42%
& и | всегда проверяют оба операнда на истинность, && и || - не всегда
🤔21👍12🔥1
BeanFactory
На картинке
Важно отметить, что
#для_продвинутых
BeanFactory — это интерфейс, определенный в фреймворке Spring, который предоставляет механизм для управления бинами (объектами), инверсии управления (IoC) и внедрения зависимостей (DI). Spring использует этот интерфейс для создания и управления бинами, которые представляют собой объекты, управляемые контейнером Spring.На картинке
XmlBeanFactory используется для создания контейнера бинов на основе конфигурационного файла beans.xml. В этом файле определяется бин с именем «helloWorld», и экземпляр этого бина извлекается из BeanFactory и использован.Важно отметить, что
XmlBeanFactory является устаревшим в новых версиях Spring. Вместо него рекомендуется использовать ApplicationContext, который предоставляет дополнительные функции и улучшенную производительность.#для_продвинутых
👍5
CompletableFuture
#для_продвинутых
CompletableFuture представляет собой мощный и гибкий механизм для асинхронного программирования и выполнения параллельных задач. Этот класс был введен в Java 8 и предоставляет более высокоуровневый интерфейс для работы с асинхронными операциями, чем традиционные Future и ExecutorService.#для_продвинутых
👍6
Low coupling
Low coupling (низкая связанность) в программировании означает уровень зависимости между различными компонентами или модулями программы. Чем ниже связанность, тем лучше, поскольку это облегчает изменения в коде, повышает его читаемость и обеспечивает легкость тестирования и поддержки.
Проектирование с низкой связанностью важно для создания гибкого, поддерживаемого и расширяемого кода. Это улучшает возможность внесения изменений без воздействия на другие части системы.
#для_продвинутых
Low coupling (низкая связанность) в программировании означает уровень зависимости между различными компонентами или модулями программы. Чем ниже связанность, тем лучше, поскольку это облегчает изменения в коде, повышает его читаемость и обеспечивает легкость тестирования и поддержки.
Проектирование с низкой связанностью важно для создания гибкого, поддерживаемого и расширяемого кода. Это улучшает возможность внесения изменений без воздействия на другие части системы.
#для_продвинутых
👍8
PriorityBlockingQueue
Однако важным отличием от стандартной очереди с приоритетом (
#для_продвинутых
PriorityBlockingQueue представляет собой реализацию интерфейса BlockingQueue, которая расширяет функциональность обычной очереди (Queue) для поддержки приоритетов элементов. Элементы в этой очереди сортируются с использованием их естественного порядка или с помощью компаратора, предоставленного во время создания очереди. Однако важным отличием от стандартной очереди с приоритетом (
PriorityQueue) является то, что PriorityBlockingQueue является блокирующей. Это означает, что если очередь пуста, поток, пытающийся извлечь элемент, будет блокирован до тех пор, пока другой поток не вставит элемент.#для_продвинутых
👍7
Метод newSingleThreadExecutor()
Метод
В примере выше создается
#для_продвинутых
Метод
newSingleThreadExecutor() используется для создания ExecutorService с единственным рабочим потоком. ExecutorService предоставляет удобный способ управления выполнением задач в асинхронном режиме.В примере выше создается
ExecutorService с одним рабочим потоком, и две задачи (task1 и task2) передаются на выполнение с использованием метода submit(). Закрытие ExecutorService выполняется с помощью метода shutdown(), который гарантирует, что больше никакие задачи не будут приняты, и потоки будут завершены после завершения всех текущих задач.#для_продвинутых
👍8
Какой метод должен быть переопределен классом, реализующим интерфейс Runnable для выполнения задачи в отдельном потоке?
Anonymous Quiz
4%
int run()
74%
void run()
3%
boolean run()
11%
void run(int priority)
8%
Узнать ответ
👍22
#Вопросы_с_собеседования
Рассмотрим задачу по созданию простого сервиса для управления задачами (To-Do list). Ваша задача — написать простую программу, которая позволяет добавлять задачи, удалять задачи и выводить список текущих задач.
Мы импортируем две библиотеки.
Затем создаем объект Scanner для считывания ввода с клавиатуры и бесконечный цикл для взаимодействия с пользователем.
Выводим меню с четырьмя действиями для пользователя, читаем выбор пользователя с клавиатуры и в зависимости от выбора пользователя, программа вызывает соответствующий метод. Этот метод запрашивает у пользователя новую задачу, добавляет её в список и выводит сообщение.
Таким образом, программа предоставляет простой интерфейс для взаимодействия с To-Do list, позволяя пользователю добавлять, удалять и просматривать задачи.
Рассмотрим задачу по созданию простого сервиса для управления задачами (To-Do list). Ваша задача — написать простую программу, которая позволяет добавлять задачи, удалять задачи и выводить список текущих задач.
Мы импортируем две библиотеки.
ArrayList используется для хранения списка задач, а Scanner — для ввода данных с клавиатуры. Затем определяем класс ToDoList и объявляем переменную tasks типа ArrayList, которая будет хранить наши задачи. Затем создаем объект Scanner для считывания ввода с клавиатуры и бесконечный цикл для взаимодействия с пользователем.
Выводим меню с четырьмя действиями для пользователя, читаем выбор пользователя с клавиатуры и в зависимости от выбора пользователя, программа вызывает соответствующий метод. Этот метод запрашивает у пользователя новую задачу, добавляет её в список и выводит сообщение.
Таким образом, программа предоставляет простой интерфейс для взаимодействия с To-Do list, позволяя пользователю добавлять, удалять и просматривать задачи.
👍18
PushbackInputStream
Когда вы считываете байты из
#для_продвинутых
PushbackInputStream — это класс, который обеспечивает возможность «откатывать» (push back) один или несколько байтов в поток ввода. Этот класс является подклассом FilterInputStream и добавляет функциональность для отката байтов.Когда вы считываете байты из
PushbackInputStream, вы можете использовать метод unread, чтобы вернуть один или несколько байтов обратно в поток. Это может быть полезно, например, если вы прочитали несколько байтов и поняли, что они не являются частью ожидаемых данных, и вы хотите вернуть их обратно для последующего считывания.#для_продвинутых
👍11❤1
ServletContext
Некоторые из основных методов, предоставляемых интерфейсом
#для_продвинутых
ServletContext — это интерфейс, который предоставляет методы для взаимодействия с контекстом сервлета. Контекст сервлета — это область, в которой работает сервлет, и предоставляет средства для обмена данными между сервлетами, а также для доступа к различным ресурсам, таким как файлы, базы данных и другие.Некоторые из основных методов, предоставляемых интерфейсом
ServletContext, включают:getInitParameter(String name): Возвращает значение инициализационного параметра сервлета, указанного по имени.getInitParameterNames(): Возвращает имена всех инициализационных параметров сервлета.getAttribute(String name): Возвращает значение атрибута, сохраненного в контексте сервлета по имени.setAttribute(String name, Object object): Устанавливает значение атрибута в контексте сервлета.getRequestDispatcher(String path): Возвращает объект RequestDispatcher, который используется для включения другого ресурса (например, другого сервлета или JSP-страницы) в текущий запрос.getRealPath(String path): Преобразует виртуальный путь в абсолютный путь на сервере.#для_продвинутых
👍7❤2
InterruptedException
Думаю, вы заметили, что мы везде обрабатываем эту ошибку. Пока поток ожидает, кто-то может прервать его работу.
Ещё можно приостановить работу во время выполнения какого-то действия за счёт проверки
#для_продвинутых
Думаю, вы заметили, что мы везде обрабатываем эту ошибку. Пока поток ожидает, кто-то может прервать его работу.
Thread.stop() это устаревший метод, который просто убивал поток. Сейчас есть Thread.interrupt() который говорит, что потоку надо закончить работу.Ещё можно приостановить работу во время выполнения какого-то действия за счёт проверки
!Thread.currentThread().isInterrupted().#для_продвинутых
👍6
Аргументы командной строки
Аргументы командной строки передается методу main в виде массива строк (String[] args). Когда вы запускаете программу Java из командной строки, вы можете передать дополнительные параметры после имени класса. Эти параметры будут доступны в виде элементов массива args.
#для_продвинутых
Аргументы командной строки передается методу main в виде массива строк (String[] args). Когда вы запускаете программу Java из командной строки, вы можете передать дополнительные параметры после имени класса. Эти параметры будут доступны в виде элементов массива args.
#для_продвинутых
👍9