Класс LinkedList
Класс
#для_начинающих
Класс
LinkedList представляет собой двусвязный список, который является одной из структур данных для хранения и управления коллекцией элементов. LinkedList предоставляет реализацию интерфейсов List и Deque, что означает, что он может использоваться как список элементов и как двусторонняя очередь (двунаправленный список).#для_начинающих
👍13🔥2
Большие числа BigInteger
В Java для работы с большими числами (такими, которые не умещаются в примитивные типы данных) используется класс
#для_начинающих
В Java для работы с большими числами (такими, которые не умещаются в примитивные типы данных) используется класс
BigInteger из пакета java.math. Этот класс позволяет производить арифметические операции с большими числами, которые могут содержать до 2^31-1 битов.#для_начинающих
👍16
SynchronousQueue
В этом примере создается
SynchronousQueue — это блокирующая очередь, в которой каждая операция вставки должна ждать соответствующей операции удаления другим потоком и наоборот.В этом примере создается
SynchronousQueue. Затем запускаются два потока: производитель и потребитель. Производитель пытается добавить значение в очередь с помощью метода put(). Этот метод заблокирует выполнение, пока другой поток не вызовет метод take(). Когда потребитель вызывает метод take(), он получает значение из очереди, и выполнение производителя продолжается.👍16
Шифр Цезаря
Шифр Цезаря — это простой шифр подстановки, который сдвигает каждую букву в сообщении на фиксированное количество позиций в алфавите.
В этом примере мы создали класс
Заметьте, что этот код предназначен только для демонстрации принципа работы шифра Цезаря и не обеспечивает высокую степень безопасности.
#для_начинающих
Шифр Цезаря — это простой шифр подстановки, который сдвигает каждую букву в сообщении на фиксированное количество позиций в алфавите.
В этом примере мы создали класс
CaesarCipher, который содержит два метода: encrypt и decrypt. encrypt принимает сообщение и сдвиг, чтобы зашифровать его, а decrypt принимает зашифрованное сообщение и сдвиг, чтобы дешифровать его. Заметьте, что этот код предназначен только для демонстрации принципа работы шифра Цезаря и не обеспечивает высокую степень безопасности.
#для_начинающих
👍17
Hibernate ORM
В этом примере мы создаем класс
#для_начинающих
Hibernate ORM - это фреймворк для работы с базами данных, который позволяет разработчикам работать с объектами вместо запросов SQL. Hibernate позволяет ускорить процесс разработки и уменьшить количество кода, необходимого для работы с базой данных.В этом примере мы создаем класс
Student, который аннотируется с помощью аннотаций Hibernate, указывающих, что данный класс является сущностью, а его поля соответствуют столбцам в таблице базы данных. Затем мы создаем объект SessionFactory и используем его для сохранения и получения объекта Student из базы данных.#для_начинающих
👍16
Интерфейс UnaryOperator
Интерфейс
#для_продвинутых
Интерфейс
UnaryOperator — это функциональный интерфейс, введенный в Java 8 в пакете java.util.function. Этот интерфейс представляет собой оператор, который принимает один аргумент и возвращает результат того же типа, что и входной аргумент. Он представляет унарную операцию, то есть операцию, которая применяется к одному операнду.#для_продвинутых
👍10
Метод replaceFirst()
Метод
Сигнатура метода:
#для_начинающих
Метод
replaceFirst() в Java используется для замены первого подстроки в строке на другую подстроку. Этот метод является частью класса java.lang.String и принимает два параметра: регулярное выражение (регулярное выражение) и замену.Сигнатура метода:
public String replaceFirst(String regex, String replacement)Где:
regex — это регулярное выражение, которое вы ищете в строке.replacement — строка, которой вы заменяете первое найденное совпадение с regex.#для_начинающих
👍18
Callable
#для_продвинутых
Callable — это интерфейс из пакета java.util.concurrent, который представляет собой задачу, которую можно выполнить и получить результат, а также обработать исключение, если оно произошло во время выполнения задачи. Он аналогичен интерфейсу Runnable, но в отличие от Runnable, Callable может возвращать результат выполнения и бросать проверяемые исключения.#для_продвинутых
👍8
Как вызвать один конструктор из другого?
В Java, вы можете вызвать один конструктор из другого с использованием ключевого слова this. Это делается с целью избежать дублирования кода в разных конструкторах класса.
В приведенном выше примере конструктор по умолчанию вызывает конструктор с параметром, передавая ему значение 0.
Обратите внимание, что вызов другого конструктора должен быть первым оператором в теле конструктора. Это обязательное правило.
#для_начинающих
В Java, вы можете вызвать один конструктор из другого с использованием ключевого слова this. Это делается с целью избежать дублирования кода в разных конструкторах класса.
В приведенном выше примере конструктор по умолчанию вызывает конструктор с параметром, передавая ему значение 0.
Обратите внимание, что вызов другого конструктора должен быть первым оператором в теле конструктора. Это обязательное правило.
#для_начинающих
👍22
Класс Properties
Класс
Класс
Следующая программа показывает несколько методов, поддерживаемых этой структурой данных.
Методы и классы, объявленные
#для_продвинутых
Класс
Properties — это подкласс Hashtable. Он используется для хранения списков значений, в которых ключ является String, а значение также является String.Класс
Properties используется множеством других классов. Например, это тип объекта, возвращаемый System.getProperties(), когда тот получает внешние значения.Properties определяет следующие переменную экземпляра. Эта переменная содержит список свойств по умолчанию, связанный с объектом Properties.Следующая программа показывает несколько методов, поддерживаемых этой структурой данных.
Методы и классы, объявленные
Properties, можно посмотреть здесь.#для_продвинутых
👍16❤2
Класс Stack
Класс
В Java, класс
#для_продвинутых
Класс
Stack является подклассом класса Vector. Стек является линейной структурой данных, где элементы добавляются и удаляются в соответствии с принципом «последним вошел, первым вышел» (LIFO — Last-In, First-Out). В Java, класс
Stack был часто использован в более ранних версиях для работы со стеками, но в более современных версиях рекомендуется использовать класс Deque (Double-ended queue) из пакета java.util. Deque предоставляет методы для работы как со стеком, так и с очередью.#для_продвинутых
👍15
👍21❤1
Gradle
Это инструмент автоматизации сборки, который в основном используется в Android-разработке. Популярная альтернатива Ant и Maven.
Gradle позволяет определять и управлять зависимостями проекта, запускать модульные тесты и упаковывать приложение для развертывания. Gradle также имеет систему плагинов, которая позволяет добавлять функциональные возможности и настраивать процесс сборки.
#для_начинающих
Это инструмент автоматизации сборки, который в основном используется в Android-разработке. Популярная альтернатива Ant и Maven.
Gradle позволяет определять и управлять зависимостями проекта, запускать модульные тесты и упаковывать приложение для развертывания. Gradle также имеет систему плагинов, которая позволяет добавлять функциональные возможности и настраивать процесс сборки.
#для_начинающих
👍11❤3
Когда использовать рефлексии?
Уверен многих кто только начал учить ReflectionAPI удивили возможности этого инструмента. Но работа с ним довольно тяжёлая для системы, поэтому лучше использовать её в крайних случаях.
К примеру — обработка класса с аннотациями (пример выше). Извлекая аннотации из объектов класса, можно обрабатывать её каким угодно образом.
Также рефлексии часто применяют в тестировке, а именно для приватных полей и методов. Достаточно получить метод из класса, задать
#для_начинающих
Уверен многих кто только начал учить ReflectionAPI удивили возможности этого инструмента. Но работа с ним довольно тяжёлая для системы, поэтому лучше использовать её в крайних случаях.
К примеру — обработка класса с аннотациями (пример выше). Извлекая аннотации из объектов класса, можно обрабатывать её каким угодно образом.
Также рефлексии часто применяют в тестировке, а именно для приватных полей и методов. Достаточно получить метод из класса, задать
method.isAccessible(true) и можно вызывать его как публичный.#для_начинающих
👍13
Как упростить себе жизнь: удобные юнит-тесты с JUnit и AssertJ
Для тестирования Java-приложений создано столько полезных инструментов, что в них немудрено запутаться.
Смотреть статью
Для тестирования Java-приложений создано столько полезных инструментов, что в них немудрено запутаться.
Смотреть статью
👍10
Логирование данных
Уже давно прошло то время, когда для наблюдением за работой программы надо сидеть на стуле и всматриваться в консоль, сейчас эту работу делают логеры.
Суть логеров в записи данных из программы, дополняя её такими данными как время, место, уровень и так далее.
Самым популярным логером на данный момент является Log4J, установить который можно с помощью Maven/Gradle.
#для_продвинутый
Уже давно прошло то время, когда для наблюдением за работой программы надо сидеть на стуле и всматриваться в консоль, сейчас эту работу делают логеры.
Суть логеров в записи данных из программы, дополняя её такими данными как время, место, уровень и так далее.
Самым популярным логером на данный момент является Log4J, установить который можно с помощью Maven/Gradle.
#для_продвинутый
👍27
В каком классе/интерфейсе реализованы/объявлены методы wait(), notify(), notifyAll()?
Anonymous Quiz
55%
Object
14%
Runnable
6%
Callable
24%
Thread
Интерфейс Enumeration
Интерфейс
Этот устаревший интерфейс был заменён
Методы, объявленные Enumeration, можно посмотреть здесь.
#для_начинающих
Интерфейс
Enumeration — определяет методы, с помощью которых вы можете перечислить (получить по одному) элементы в коллекции объектов.Этот устаревший интерфейс был заменён
Iterator. Хоть и не совсем, но Enumeration считается устаревшим для нового кода. Однако он используется некоторыми методами, определёнными такими устаревшими классами, как Vector и Properties, используется другими API классами и сейчас широко используется в коде приложений.Методы, объявленные Enumeration, можно посмотреть здесь.
#для_начинающих
👍7
Класс TreeMap
Класс
Следует отметить, что, в отличие от хэш-карты, карта деревьев гарантирует, что ее элементы будут отсортированы в порядке возрастания ключа.
Все методы и конструкции класса
#для_продвинутых
Класс
TreeMap реализует интерфейс Map, используя дерево. TreeMap обеспечивает эффективное средство хранения пар ключ/значение в отсортированном порядке и позволяет быстро извлекать данные.Следует отметить, что, в отличие от хэш-карты, карта деревьев гарантирует, что ее элементы будут отсортированы в порядке возрастания ключа.
Все методы и конструкции класса
TreeMap можно посмотреть здесь.#для_продвинутых
👍10❤1
ExecutorService
ExecutorService — это интерфейс в Java, который предоставляет высокоуровневый способ управления выполнением задач (потоков) в фоновом режиме. Он является частью пакета
#для_продвинутых
ExecutorService — это интерфейс в Java, который предоставляет высокоуровневый способ управления выполнением задач (потоков) в фоновом режиме. Он является частью пакета
java.util.concurrent и предоставляет абстракцию над управлением потоками выполнения, что облегчает создание и управление потоками в многозадачных приложениях.ExecutorService позволяет разработчикам создавать пулы потоков, которые автоматически управляются пулом, а не создаются и уничтожаются каждый раз вручную. Это снижает накладные расходы на создание и уничтожение потоков, что может быть дорогостоящей операцией.#для_продвинутых
👍13❤1
В чём разница между >> и >>>?
Операторы >> и >>> используются для выполнения побитовых сдвигов над числами.
Оператор >> выполняет арифметический сдвиг вправо. При этом, если число положительное, то сдвиг вправо на n битов эквивалентен делению числа на 2^n. Однако при работе с отрицательными числами, оператор >> выполняет расширение знака, то есть заполняет старшие биты таким же значением, как старший бит исходного числа.
Оператор >>> также выполняет сдвиг вправо, но в отличие от >>, он всегда заполняет старшие биты нулями, даже при отрицательных числах. Этот оператор полезен при работе с беззнаковыми числами или при необходимости получения значения без знакового расширения.
#для_начинающих
Операторы >> и >>> используются для выполнения побитовых сдвигов над числами.
Оператор >> выполняет арифметический сдвиг вправо. При этом, если число положительное, то сдвиг вправо на n битов эквивалентен делению числа на 2^n. Однако при работе с отрицательными числами, оператор >> выполняет расширение знака, то есть заполняет старшие биты таким же значением, как старший бит исходного числа.
Оператор >>> также выполняет сдвиг вправо, но в отличие от >>, он всегда заполняет старшие биты нулями, даже при отрицательных числах. Этот оператор полезен при работе с беззнаковыми числами или при необходимости получения значения без знакового расширения.
#для_начинающих
👍17❤3