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

169 записей с тегом "Java Коллекции"

Посмотреть все теги

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

1. Обзор

В этой статье мы рассмотрим SynchronousQueue из пакета java.util.concurrent .

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

2. Обзор API

SynchronousQueue поддерживает только две операции: take() и put(), и обе они блокируют .

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

1. Обзор

В этой статье мы рассмотрим конструкцию TransferQueue из стандартного пакета java.util.concurrent .

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

Реализация на самом деле похожа на BlockingQueue , но дает нам новую возможность реализовать форму обратного давления. Это означает, что когда производитель отправляет сообщение потребителю с помощью метода transfer() , производитель будет оставаться заблокированным до тех пор, пока сообщение не будет использовано.

2. Один производитель — ноль потребителей

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

1. Обзор

Перечисление — это интерфейс из первой версии Java (JDK 1.0). Этот интерфейс является универсальным и обеспечивает ленивый доступ к последовательности элементов . Хотя в более новых версиях Java есть лучшие альтернативы, устаревшие реализации могут по-прежнему возвращать результаты с использованием интерфейса Enumeration . Поэтому для модернизации устаревшей реализации разработчику может потребоваться преобразовать объект Enumeration в Java Stream API .

В этом кратком руководстве мы собираемся реализовать служебный метод для преобразования объектов Enumeration в API Java Stream. В результате мы сможем использовать потоковые методы, такие как filter и map .

2. Интерфейс перечисления Java

Давайте начнем с примера, иллюстрирующего использование объекта Enumeration :

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

1. Введение

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

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

Мы также посмотрим, где Java API решил аналогичную проблему.

2. Рекомендации по использованию универсальных массивов

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

1. Обзор

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

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

2. Настройка

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

1. Обзор

В Java создание копии списка иногда может привести к исключению IndexOutOfBoundsException: «Источник не соответствует назначению». В этом кратком руководстве мы рассмотрим, почему мы получаем эту ошибку при использовании метода Collections.copy и как ее можно решить. Мы также рассмотрим альтернативы Collections.copy для создания копии списка.

2. Воспроизведение проблемы

Начнем с метода создания копии списка с помощью метода Collections.copy :

static List<Integer> copyList(List<Integer> source) {
List<Integer> destination = new ArrayList<>(source.size());
Collections.copy(destination, source);
return destination;
}

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

1. Обзор

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

2. Перетасовка списка

Мы будем использовать метод java.util.Collections.shuffle , который принимает в качестве входных данных список и перемешивает его на месте. Под «на месте» мы подразумеваем, что он перемешивает тот же список, который был передан во входные данные, вместо того, чтобы создавать новый список с перетасованными элементами.

Давайте рассмотрим быстрый пример, показывающий, как перетасовать List :

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

1. Обзор

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

Как и многое другое, это стало намного проще благодаря внедрению потоков в Java 8 .

2. Пересечение двух списков строк

Давайте создадим два List s из String с некоторым пересечением — оба содержат дублирующиеся элементы:

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

1. Обзор

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

В этом уроке мы рассмотрим разницу между емкостью ArrayList и размером массива.

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

2. Пример