Иерархия классов-коллекций


Классы-коллекции, реализующие описанные выше интерфейсы, являются наследниками абстрактного класса AbstractCollection. Иерархия этих классов приведена на рисунке (синим цветом показаны интерфейсы).

Класс Vector

Vector (вектор) – набор упорядоченных элементов, к каждому из которых можно обратиться по индексу. По сути эта коллекция представляет собой обычный список.

Особенность вектора в том, что помимо текущего размера, определяемого количеством элементов в нем и возвращаемого методом size(), он имеет емкость, возвращаемую методом capacity() – размер выделенной под элементы памяти, которая может быть больше текущего размера. Ее можно увеличить методом ensureCapacity(int minCapacity) или сравнять с размером вектора методом trimToSize(). Каждый раз, когда нужно добавить в полностью «заполненный» вектор новый элемент, емкость увеличивается с запасом.

В классе Vector четыре конструктора:

Vector() – создает пустой вектор с емкостью в 10 элементов;

Vector(int capacity) – создает пустой вектор указанной емкости;

Vector(int capacity, int increment) – создает пустой вектор указанной емкости, а также задает число, на которое будет увеличиваться емкость при необходимости;

Vector(Collection c) – создает вектор и заполняет его элементами другой коллекции.

Класс Vector реализует интерфейс List, основные методы которого названы выше. К этим методам добавляется еще несколько.

firstElement() – позволяет обратиться к первому элементу вектора.

lastElement() – позволяет обратиться к последнему элементу.

removeElementAt(int pos) – удаляет элемент в заданной позиции.

removeRange(int begin, int end) – удаляет несколько подряд идущих элементов.

Класс ArrayList

Класс ArrayList – аналог класса Vector. Он представляет собой список и может использоваться в тех же ситуациях. Основное отличие в том, что он не синхронизирован и одновременная работа нескольких параллельных процессов с объектом этого класса не рекомендуется. В обычных же ситуациях он работает быстрее.

Класс Stack

Stack – коллекция, объединяющая элементы в стек. Стек работает по принципу LIFO (последним пришел – первым ушел). Элементы кладутся в стек «друг на друга», причем взять можно только «верхний» элемент, т.е. тот, который был положен в стек последним. Для стека характерны операции, реализованные в следующих методах класса Stack:

push(Object item) – помещает элемент на вершину стека;

pop() – извлекает из стека верхний элемент;

peek() – возвращает верхний элемент, не извлекая его из стека;

empty() – проверяет, не пуст ли стек;

search(Object item) – ищет «глубину» объекта в стеке. Верхний элемент имеет позицию 1, находящийся под ним – 2 и т.д. Если объекта в стеке нет, возвращает -1.

Класс Stack является наследником класса Vector, поэтому имеет все его методы (и, разумеется, реализует интерфейс List). Однако если в программе нужно моделировать именно стек, рекомендуется использовать только пять вышеперечисленных методов.



Дата добавления: 2017-01-26; просмотров: 1607;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.008 сек.