Добавил:
Rumpelstilzchen2018@yandex.ru Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

3-й семестр / Лекции / 8 - Презентация

.pdf
Скачиваний:
56
Добавлен:
25.12.2020
Размер:
10.74 Mб
Скачать

Collection

Центрдистанционногообучения

Красным

здесь

выделены

интерфейс

ы,

зеленым -

абстрактн ые классы,

а синим готовые

реализации.

online.mirea.ru

Центрдистанционногообучения

ArrayList и LinkedList(продолжение)

ArrayList - самая часто используемая коллекция.

ArrayList инкапсулирует в себе обычный массив, длина которого автоматически увеличивается при добавлении новых элементов.

Так как ArrayList использует массив, то время доступа к элементу по индексу минимально (В отличии от LinkedList).

При удалении произвольного элемента из списка, все элементы находящиеся «правее» смещаются на одну ячейку влево, при этом реальный размер массива (его емкость, capacity) не изменяется.

Если при добавлении элемента, оказывается, что массив полностью заполнен, будет создан новый массив размером (n * 3) / 2 + 1, в него будут помещены все элементы из старого массива + новый, добавляемый элемент.

online.mirea.ru

Центрдистанционногообучения

ArrayList и LinkedList (продолжение)

LinkedList - Двусвязный список.

Это структура данных, состоящая из узлов, каждый из которых содержит как собственно данные, так и две ссылки («связки») на следующий и предыдущий узел списка.

Доступ к произвольному элементу осуществляется за линейное время (но доступ к первому и последнему элементу списка всегда осуществляется за константное время — ссылки постоянно хранятся на первый и последний,

так что добавление элемента в конец списка вовсе не значит, что придется перебирать весь список в поисках последнего элемента).

В целом же, LinkedList в абсолютных величинах проигрывает ArrayList и по потребляемой памяти и по скорости выполнения операций.

online.mirea.ru

Центрдистанционногообучения

Интерфейс List и класс ArrayList (продолжение)

online.mirea.ru

Центрдистанционногообучения

Класс ArrayList

Довольно-таки простой класс, который реализует интерфейс List

Имеет улучшение по сравнению с массивами

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

online.mirea.ru

Когда производится много добавлений и удалений

Центрдистанционногообучения

ArrayList

ArrayList является несихронизируемым динамически расширяемым массивом с эффективным доступом по

индексу

Первоначальная емкостьопционально

Example:

ArrayList<Integer> arr =

new ArrayList<Integer>(10/*initialCapacity*/); arr.add(7);

ArrayList на самом деле не является списком (хотя реализует интерфейс List) Если вам нужен список, то используйте класс

LinkedList!

Когда его использовать?

online.mirea.ru

76

Центрдистанционногообучения

Vector

Vector это и синхронизируемый динамически расширяемый массив массив с эффективным

доступом по индексу

Example:

Vector<Integer> vec =

Первоначальная емкостьопционально

new Vector<Integer>(10/*initialCapacity*/); vec.add(7);

Vector является старым контейнером (Java 1.0) и сейчас гораздо реже используется, заменяется в основном ArrayList (Java 1.2)который не синхронизируется

online.mirea.ru

77

Центрдистанционногообучения

GenericФункция языка,Collectionsпредставленная в Java 5.0 называется родовыми коллекциями (или дженериками)

Дженерики позволяют определить коллекцию, содержащую ссылки на объекты определенного типа

List<String> myList = new ArrayList<String>();

• Где myList является cписком объектов String, где строка является параметрическим типом

• В myList можно хранить только ссылки на объекты типа String, и все извлекаемые элементы тоже имеют тип String.

• Параметрические типы аналогичны параметрам методов

online.mirea.ru

Центрдистанционногообучения

Создание Generic Collection

online.mirea.ru

Центрдистанционногообучения

Спецификация класса ArrayList

online.mirea.ru