3-й семестр / Лекции / 8 - Презентация
.pdfCollection
Центрдистанционногообучения
Красным
здесь
выделены
интерфейс
ы,
зеленым -
абстрактн ые классы,
а синим готовые
реализации.
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