Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на Java.docx
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
3.45 Mб
Скачать

5.9.1 Класс ArrayList

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

ArrayList имеет следующие конструкторы:

ArrayList()

ArrayList (Collection с)

ArrayList (int capacity)

Первый конструктор строит пустой список массива. Второй – список массива, который инициализирован элементами коллекции с. Третий формирует спсиок с указанной начальной емкостью (capacity). Емкость – это размер(т.е. количество элементов) рассматриваемого массива, который служит для хранения указанного (в параметре capacity) количества элементов. Когда элементы добавляются к списку массива, емкость растет автоматически.

Листинг 5.12

import java.util.ArrayList;

public class Main {

public static void main(String[] args) {

ArrayList a = new ArrayList();

System.out.println("Size " + a.size());

a.add("123");

a.add("hello");

a.add(10);

System.out.println("Size " + a.size());

System.out.println(a);

a.add(1, 100);

System.out.println("Size " + a.size());

System.out.println(a);

a.remove("123");

System.out.println("Size " + a.size());

System.out.println(a);

}

}

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

В результате выполнения данной программы получим:

Size 0

Size 3

[123, hello, 10]

Size 4

[123, 100, hello, 10]

Size 3

[100, hello, 10]

Задание:

Напишите методы пересечения и объединения двух коллекций.

5.9.2 Класс LinkedList

Класс LinkedList расширяет AbstractSequentialList и реализует интерфейс List. Oн обеспечивает структуру данных связного списка и имеет два следующих конструктора:

LinkedList ()

LinkedList (Collection с)

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

В дополнение к методам, которые он наследует, класс LinkedList определяет некоторые собственные полезные методы для манипулирования и доступа к спискам. Чтобы добавить Элемент в начало списка, используйте метод addFirst(), а для добавления элементов в конец списка вызывайте метод addLast():

void addFirst (Object obj)

void addLast (Object obj)

Здесь оbj – добавляемый элемент.

Чтобы получить первый элемент, вызовите метод getFirst (), а для извлечения последнего элемента – метод getLast():

Object getFirst()

Object getLast()

Для удаления первого элемента служит метод removeFirst(), а для удаления последнего – removeLast ():

Object removeFirst()

Object removeLast()