Перейти к основному содержимому

· 6 мин. чтения

1. Обзор

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

В этом руководстве мы рассмотрим несколько примеров того, как найти все классы в пакете Java во время выполнения.

2. Загрузчики классов

Во-первых, мы начнем обсуждение с загрузчиков классов Java . Загрузчик классов Java является частью среды выполнения Java (JRE), которая динамически загружает классы Java в виртуальную машину Java (JVM). Загрузчик классов Java отделяет JRE от знаний о файлах и файловых системах. Не все классы загружаются одним загрузчиком классов .

· 4 мин. чтения

1. Обзор

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

В этой статье мы будем использовать регулярные выражения для поиска и извлечения чисел из строк . Мы также рассмотрим некоторые способы подсчета цифр.

2. Подсчет числовых цифр

Начнем с подсчета цифр, найденных в строке.

· 3 мин. чтения

1. Обзор

В этом кратком руководстве мы узнаем, как записать поток ввода Java в поток вывода Java `` . Сначала мы будем использовать базовую функциональность из Java 8 и Java 9. Затем мы рассмотрим пару внешних библиотек — Guava и библиотеку ввода-вывода Apache Commons .

Служебные методы, предоставляемые Java 9, Guava и Apache Commons IO, не очищают и не закрывают потоки. Итак, нам нужно будет управлять этими ресурсами, используя блок try-with-resources или finally .

2. Использование Java 8

Во-первых, мы начнем с создания простого метода с использованием vanilla Java для копирования содержимого из InputStream в OutputStream :

· 3 мин. чтения

1. Обзор

В этой быстрой статье мы покажем, как мы можем инвертировать массив в Java.

Мы увидим несколько различных способов сделать это, используя чистые решения на основе Java 8 — некоторые из них изменяют существующий массив, а некоторые создают новый.

Далее мы рассмотрим два решения с использованием внешних библиотек — одно с использованием Apache Commons Lang и одно с использованием Google Guava .

2. Определение проблемы

· 3 мин. чтения

1. Обзор

В этом кратком руководстве мы узнаем о различных способах получения размера Iterable в Java.

2. Итерируемый и итератор

Iterable — один из основных интерфейсов классов коллекций в Java.

Интерфейс Collection расширяет Iterable , поэтому все дочерние классы Collection также реализуют Iterable .

· 4 мин. чтения

1. Введение

В этом кратком руководстве мы узнаем, как объединить массив примитивов с односимвольным разделителем в Java . В наших примерах мы рассмотрим два массива: массив int и массив char .

2. Определение проблемы

Давайте начнем с определения массива int и массива char для примеров, а также символа-разделителя, который мы будем использовать для соединения их содержимого:

int[] intArray = {1, 2, 3, 4, 5, 6, 7, 8, 9};
char[] charArray = {'a', 'b', 'c', 'd', 'e', 'f'};
char separatorChar = '-';
String separator = String.valueOf(separatorChar);

· 4 мин. чтения

1. Обзор

В этом кратком руководстве мы узнаем, как определить, все ли элементы в списке одинаковы.

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

2. Пример

Предположим, у нас есть следующие 3 списка:

· 3 мин. чтения

1. Обзор

В этом кратком руководстве мы узнаем о различных способах итерации списка в Java в обратном порядке.

2. Итератор в Java

Iterator — это интерфейс в Java Collections Framework , который позволяет нам перебирать элементы в коллекции. Он был представлен в Java 1.2 как замена Enumeration .

3. Итерация в обратном направлении с использованием Core Java

· 5 мин. чтения

1. Введение

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

2. Проблема

HashMap не является потокобезопасной структурой данных из-за своей несинхронизированной природы. Это означает, что команды из многопоточной среды могут привести к несогласованности данных.

Чтобы решить эту проблему, мы можем либо преобразовать исходную карту с помощью метода Collections#synchronizedMap , либо использовать структуру данных HashTable . Оба вернут потокобезопасную реализацию интерфейса Map , но за счет производительности.

· 4 мин. чтения

1. Обзор

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

2. Стандартные карты

В Java есть несколько реализаций интерфейса Map , каждая из которых имеет свои особенности.

Однако ни одна из существующих реализаций Map ядра Java не позволяет Map обрабатывать несколько значений для одного ключа .