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

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

1. Обзор

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

2. Мьютекс

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

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

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

1. Обзор

Иногда нам нужно определить, относится ли объект к примитивному типу, особенно для примитивных типов-оболочек. Однако в стандартном JDK нет встроенных методов для достижения этой цели.

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

2. Примитивы и классы-оболочки

В Java есть девять предопределенных объектов для представления восьми примитивов и типа void . Каждый примитивный тип имеет соответствующий класс-оболочку .

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

1. Введение

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

В этом уроке мы кратко упомянем, как мы можем это сделать — что сложнее, чем кажется.

Для ознакомления с необязательным классом Java взгляните на нашу предыдущую статью .

2. Ява 8

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

1. Обзор

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

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

2. Дополнить строку с помощью пользовательских методов

Класс String в Java не предоставляет удобного метода заполнения, поэтому давайте создадим несколько методов самостоятельно. Однако сначала давайте установим некоторые ожидания:

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

1. Обзор

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

2. Проблема

Начнем с определения проблемы. У нас есть массив примитивов ( int[] ), и мы хотим преобразовать этот массив в список ( List<Integer> ). Интуитивной первой попыткой может быть:

int[] input = new int[]{1,2,3,4};
List<Integer> output = Arrays.asList(input);

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

1. Введение

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

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

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

У нас есть модульные тесты для каждой реализации, которые вы можете найти на GitHub .

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

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

1. Обзор

В этом руководстве мы рассмотрим различные способы поиска строки в списке ArrayList . Наша цель — проверить, присутствует ли определенная непустая последовательность символов в каком-либо из элементов в ArrayList , и вернуть список со всеми соответствующими элементами.

2. Базовый цикл

Во-первых, давайте воспользуемся базовым циклом для поиска последовательности символов в заданной строке поиска, используя метод contains класса String Java :

public List<String> findUsingLoop(String search, List<String> list) {
List<String> matches = new ArrayList<String>();

for(String str: list) {
if (str.contains(search)) {
matches.add(str);
}
}

return matches;
}

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

1. Введение

Набор — это удобный способ представить уникальную коллекцию предметов.

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

2. Немного теории множеств

2.1. Что такое набор?

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

1. Введение

Мы часто хотим преобразовать Java Stream в коллекцию. Обычно это приводит к изменяемой коллекции, но мы можем настроить ее.

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

2. Использование стандартной Java

2.1. Использование toUnmodifiedList в Java

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

1. Обзор

Согласно Википедии , анаграмма — это слово или фраза, образованная перестановкой букв другого слова или фразы.

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

В этом уроке мы рассмотрим обнаружение анаграмм целых строк, в которых количество всех символов должно быть равным, включая не-альфа-символы, такие как пробелы и цифры. Например, «!с низким содержанием соли!» и «совы-лат!!» будут считаться анаграммами, поскольку они содержат точно такие же символы.

2. Решение