Java Коллекции: Уроки для новичков (Collections Framework)

Коллекции в Java — набор взаимосвязанных классов, реализующих структуры данных. Они позволяют создавать структуры, подобные массивам, но с расширенным функционалом.

Основные интерфейсы и классы

В Java множество классов для работы с коллекциями. Основные интерфейсы — Collection и Map. Интерфейс Map создаёт структуры «ключ-значение», в отличие от массивов, где индекс всегда число (0, 1, 2 и т.д.). В Map ключом может быть любой объект, не только число.

Рассмотрим классы ArrayList и LinkedList. Другие классы работают аналогично, но отличаются производительностью и возможностями.

ArrayList: создание и работа с элементами

Для работы с классами создаются объекты. Ранее создавались объекты класса Scanner, теперь — объекты ArrayList и LinkedList.

Начнём с ArrayList. Класс ArrayList импортируется при первом использовании:

import java.util.ArrayList;

При создании объекта ArrayList указывается тип хранимых данных в угловых скобках < >. Можно использовать любые типы данных. Для примитивных типов (int, float, byte) используются их оболочки (Integer, Float, Byte).

Пример создания ArrayList для хранения данных типа Byte:

ArrayList<Byte> myBytes = new ArrayList<>();

В круглых скобках можно указать начальный размер списка (необязательно). ArrayList — динамический массив, его размер автоматически изменяется. Динамические массивы удобны, но могут быть менее эффективны, чем обычные массивы.

Добавление, изменение и удаление элементов

После создания объекта ArrayList, можно добавлять, удалять и изменять элементы.

Добавление элементов: метод add():

myBytes.add((byte) 5);
myBytes.add((byte) 50);

Обход элементов: цикл for-each:

for (Byte element : myBytes) {
    System.out.println(element);
}

Изменение элемента: метод set():

myBytes.set(1, (byte) 30); // Заменяем второй элемент (индекс 1) на 30

Получение размера коллекции: метод size():

int size = myBytes.size();

Получение элемента по индексу: метод get():

Byte element = myBytes.get(1); // Получаем второй элемент
System.out.println(element);

Удаление элемента по индексу: метод remove():

myBytes.remove(0); // Удаляем первый элемент

Удаление всех элементов: метод clear():

myBytes.clear();

LinkedList: создание и работа с элементами

Класс LinkedList также используется для создания динамических списков. Создание аналогично ArrayList:

import java.util.LinkedList;
LinkedList<Float> myFloats = new LinkedList<>();

Основное различие между ArrayList и LinkedList — способ хранения данных. LinkedList связывает элементы, что делает операции добавления и удаления эффективнее, чем в ArrayList. LinkedList предпочтительнее, если часто добавляются или удаляются элементы. ArrayList быстрее, если список преимущественно используется для чтения данных.

Добавление, удаление и доступ к элементам в LinkedList осуществляется с помощью тех же методов (add(), remove(), get(), size(), clear()), что и в ArrayList.

myFloats.add(5.6f);
myFloats.add(10.2f);

for (Float element : myFloats) {
    System.out.println(element);
}

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

Что будем искать? Например,программа