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

50 записей с тегом "Java List"

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

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

1. Обзор

Этот учебник представляет собой краткое введение в то, как найти минимальное и максимальное значения из заданного списка или коллекции с помощью мощного Stream API в Java 8.

2. Найдите Макса в списке целых чисел

Мы можем использовать метод max() , предоставляемый через интерфейс java.util.Stream , который принимает ссылку на метод:

@Test
public void whenListIsOfIntegerThenMaxCanBeDoneUsingIntegerComparator() {
// given
List<Integer> listOfIntegers = Arrays.asList(1, 2, 3, 4, 56, 7, 89, 10);
Integer expectedResult = 89;

// then
Integer max = listOfIntegers
.stream()
.mapToInt(v -> v)
.max().orElseThrow(NoSuchElementException::new);

assertEquals("Should be 89", expectedResult, max);
}

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

1. Обзор

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

2. Сбор элементов потока в список

Получение списка из потока — наиболее часто используемая терминальная операция конвейера потока . До Java 16 мы использовали метод Stream.collect() и передавали его коллектору в качестве аргумента для сбора элементов. Сам коллектор был создан путем вызова метода Collectors.toList() .

Однако были запросы на изменение метода для получения списка непосредственно из экземпляра Stream . После выпуска Java 16 теперь мы можем вызывать toList() , новый метод непосредственно в Stream , чтобы получить List . Такие библиотеки, как StreamEx, также предоставляют удобный способ получить список непосредственно из потока .

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

1. Введение

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

Этот учебник является частью серии « Java — Back to Basic » здесь, на ForEach.

2. Удалите дубликаты из списка, используя обычную Java

Мы можем легко удалить повторяющиеся элементы из списка с помощью стандартной Java Collections Framework через Set :

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

1. Обзор

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

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

В этом кратком руководстве мы рассмотрим, как найти различия между двумя списками . Мы попробуем несколько разных подходов, включая обычную Java (с потоками и без них ) и использование сторонних библиотек, таких как Guava и Apache Commons Collections .

2. Настройка теста

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

1. Обзор

Что касается коллекций , стандартная библиотека Java предоставляет множество вариантов на выбор. Среди этих вариантов есть две известные реализации List , известные как ArrayList и LinkedList, каждая со своими свойствами и вариантами использования.

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

2. Список массивов

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

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

1. Обзор

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

2. Цикл с Map.put()

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

Самым простым решением для достижения этого было бы перебрать список ввода и для каждого элемента:

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

1. Обзор

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

java.util.List обладает большей функциональностью, чем может поддерживать обычный массив . Например, с помощью только одного вызова встроенного метода можно проверить, находится ли конкретный элемент внутри структуры. Обычно поэтому нам иногда нужно преобразовать массив в List или Collection .

Для ознакомления с основной реализацией Java ListArrayList — обратитесь к этой статье .

2. Исключение UnsupportedOperationException

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

1. Введение

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

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

взгляните на отрывок из документации List#equals Java:

… два списка считаются равными, если они содержат одни и те же элементы в одном и том же порядке.

Это определение гарантирует правильную работу метода equals в различных реализациях интерфейса List.

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

1. Обзор

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

Это очень полезная конструкция в многопоточных программах — когда мы хотим выполнить итерацию по списку потокобезопасным способом без явной синхронизации.

2. API CopyOnWriteArrayList

В дизайне CopyOnWriteArrayList используется интересный метод, позволяющий сделать его потокобезопасным без необходимости синхронизации. Когда мы используем любой из методов модификации, таких как add() или remove() , все содержимое CopyOnWriteArrayList копируется в новую внутреннюю копию.

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

1. Введение

LinkedList — это двусвязный список, реализующий интерфейсы List и Deque . Он реализует все необязательные операции со списками и разрешает все элементы (включая null ).

2. Особенности

Ниже вы можете найти наиболее важные свойства LinkedList :

  • Операции, индексирующие список, будут проходить по списку с начала или с конца, в зависимости от того, что ближе к указанному индексу.
  • Это не синхронизировано
  • Его итераторы Iterator и ListIterator являются отказоустойчивыми (это означает, что после создания итератора, если список будет изменен, будет выдано исключение ConcurrentModificationException )
  • Каждый элемент представляет собой узел, который хранит ссылку на следующий и предыдущий элементы.
  • Он поддерживает порядок вставки