Класс Java Vector
Класс Vector реализует динамический массив. Он похож на ArrayList, но между ними есть различия:
| Особенности | Вектор | ArrayList |
|---|---|---|
| Синхронизация | Синхронизированный (потокобезопасный) | Несинхронизированный |
| Производительность | Медленнее | Быстрее |
| Приращение ёмкости | Можно задать | Фиксированное (50%) |
| Iterator | fail-fast | fail-fast |
| Введено в версии | Java 1.0 | Java 1.2 |
Возможности:
Синхронизированный: Vector потокобезопасен, все методы синхронизированы
Динамическое расширение: Автоматически увеличивается, когда количество элементов превышает текущую ёмкость
Устаревший класс: Хотя он всё ещё может использоваться, обычно рекомендуется ArrayList
Реализует интерфейс RandomAccess: Поддерживает быстрый произвольный доступ
Vector в основном используется, когда вы заранее не знаете размер массива или когда вам просто нужен массив, размер которого может изменяться.
Класс Vector поддерживает 4 конструктора.
Первый конструктор создаёт вектор по умолчанию с размером по умолчанию 10:
Vector()
Второй конструктор создаёт вектор заданного размера.
Vector(int size)
Третий конструктор создаёт вектор заданного размера, а приращение задаётся с помощью incr. Приращение указывает количество элементов, на которое вектор увеличивается каждый раз.
Vector(int size,int incr)
Четвёртый конструктор создаёт вектор, содержащий элементы коллекции c:
Vector(Collection c)
Помимо методов, унаследованных от родительского класса, Vector также определяет следующие методы:
Основные операции
Пример
boolean add(E e) // Добавить элемент в конец
void add(int index, E element) // Вставить элемент в указанную позицию
boolean addAll(Collection<? extends E> c) // Добавить все элементы из коллекции
// Получение элементов
E get(int index) // Получить элемент в указанной позиции
E firstElement() // Получить первый элемент
E lastElement() // Получить последний элемент
// Удаление элементов
E remove(int index) // Удалить и вернуть элемент в указанной позиции
boolean remove(Object o) // Удалить первое вхождение указанного элемента
void clear() // Удалить все элементы
// Другие операции
int size() // Вернуть количество элементов
int capacity() // Вернуть текущую ёмкость
void ensureCapacity(int minCapacity) // Обеспечить по крайней мере минимальную ёмкость
void trimToSize() // Привести ёмкость к текущему размеру
boolean contains(Object o) // Проверить, содержит ли он указанный элемент
int indexOf(Object o) // Вернуть индекс первого вхождения элемента
| Нет. | Описание метода |
|---|---|
| 1 |
void add(int index, Object element) Вставляет указанный элемент в указанную позицию в этом векторе. |
| 2 |
boolean add(Object o) Добавляет указанный элемент в конец этого вектора. |
| 3 |
boolean addAll(Collection c) Добавляет все элементы из указанной Collection в конец этого вектора в порядке, возвращаемом итератором указанной коллекции. |
| 4 |
boolean addAll(int index, Collection c) Вставляет все элементы из указанной Collection в этот вектор в указанную позицию. |
| 5 |
void addElement(Object obj) Добавляет указанный компонент в конец этого вектора, увеличивая его размер на 1. |
| 6 |
int capacity() Возвращает текущую ёмкость этого вектора. |
| 7 |
void clear() Удаляет все элементы из этого вектора. |
| 8 |
Object clone() Возвращает копию этого вектора. |
| 9 |
boolean contains(Object elem) Возвращает true, если данный вектор содержит указанный элемент. |
| 10 |
boolean containsAll(Collection c) Возвращает true, если данный вектор содержит все элементы в указанной Collection. |
| 11 |
void copyInto(Object[] anArray) Копирует компоненты этого вектора в указанный массив. |
| 12 |
Object elementAt(int index) Возвращает компонент по указанному индексу. |
| 13 |
Enumeration elements() Возвращает перечисление компонентов этого вектора. |
| 14 |
void ensureCapacity(int minCapacity) Увеличивает емкость этого вектора (при необходимости), чтобы гарантировать, что он сможет вместить как минимум количество компонентов, заданное аргументом минимальной емкости. |
| 15 |
boolean equals(Object o) Сравнивает указанный объект с этим вектором на равенство. |
| 16 |
Object firstElement() Возвращает первый компонент (элемент с индексом 0) этого вектора. |
| 17 |
Object get(int index) Возвращает элемент в указанной позиции этого вектора. |
| 18 |
int hashCode() Возвращает значение хеш-кода для этого вектора. |
| 19 |
int indexOf(Object elem) Возвращает индекс первого вхождения указанного элемента в этот вектор или -1, если этот вектор не содержит элемент. |
| 20 |
int indexOf(Object elem, int index) Возвращает индекс первого вхождения указанного элемента в этот вектор, выполняя поиск вперёд от index, или -1, если элемент не найден. |
| 21 |
void insertElementAt(Object obj, int index) Вставляет указанный объект как компонент в этот вектор по указанному индексу. |
| 22 |
boolean isEmpty() Проверяет, не содержит ли этот вектор компонентов. |
| 23 |
Object lastElement() Возвращает последний компонент этого вектора. |
| 24 |
int lastIndexOf(Object elem) Возвращает индекс последнего вхождения указанного элемента в этот вектор; возвращает -1, если этот вектор не содержит элемент. |
| 25 |
int lastIndexOf(Object elem, int index) Возвращает индекс последнего вхождения указанного элемента в этот вектор при поиске в обратном направлении от index, или -1, если элемент не найден. |
| 26 |
Object remove(int index) Удаляет элемент в указанной позиции в этом векторе. |
| 27 |
boolean remove(Object o) Удаляет первое вхождение указанного элемента в этом векторе; если вектор не содержит элемент, элемент остаётся неизменным. |
| 28 |
boolean removeAll(Collection c) Удаляет из этого вектора все элементы, содержащиеся в указанной Collection. |
| 29 |
void removeAllElements() Удаляет все компоненты из этого вектора и устанавливает его размер равным нулю. |
| 30 |
boolean removeElement(Object obj) Удаляет первое (с наименьшим индексом) вхождение аргумента из этого вектора. |
| 31 |
void removeElementAt(int index) Удаляет компонент по указанному индексу. |
| 32 |
protected void removeRange(int fromIndex, int toIndex) Удаляет из этого List все элементы, индекс которых находится между fromIndex (включительно) и toIndex (исключительно). |
| 33 |
boolean retainAll(Collection c) Оставляет только те элементы в этом векторе, которые содержатся в указанной Collection. |
| 34 |
Object set(int index, Object element) Заменяет элемент в указанной позиции в этом векторе на указанный элемент. |
| 35 |
void setElementAt(Object obj, int index) Устанавливает компонент по указанному индексу этого вектора в указанный объект. |
| 36 |
void setSize(int newSize) Устанавливает размер этого вектора. |
| 37 |
int size() Возвращает количество компонентов в этом векторе. |
| 38 |
List subList(int fromIndex, int toIndex) Возвращает представление части этого List, с элементами в диапазоне от fromIndex (включительно) до toIndex (исключительно). |
| 39 |
Object[] toArray() Возвращает массив, содержащий все элементы этого вектора в правильном порядке. |
| 40 |
Object[] toArray(Object[] a) Возвращает массив, содержащий все элементы этого вектора в правильном порядке; тип времени выполнения возвращаемого массива совпадает с типом указанного массива. |
| 41 |
String toString() Возвращает строковое представление этого вектора, содержащее строковое представление каждого элемента. |
| 42 |
void trimToSize() Урезает емкость этого вектора до величины, равной текущему размеру вектора. |
Пример
Следующая программа иллюстрирует несколько методов, поддерживаемых этой коллекцией:
Пример
public class VectorDemo {
public static void main(String args[]) {
// начальный размер равен 3, приращение равно 2
Vector v = new Vector(3, 2);
System.out.println("Начальный размер: " + v.size());
System.out.println("Начальная емкость: " +
v.capacity());
v.addElement(new Integer(1));
v.addElement(new Integer(2));
v.addElement(new Integer(3));
v.addElement(new Integer(4));
System.out.println("Ёмкость после четырёх добавлений: " +
v.capacity());
v.addElement(new Double(5.45));
System.out.println("Текущая ёмкость: " +
v.capacity());
v.addElement(new Double(6.08));
v.addElement(new Integer(7));
System.out.println("Текущая ёмкость: " +
v.capacity());
v.addElement(new Float(9.4));
v.addElement(new Integer(10));
System.out.println("Текущая ёмкость: " +
v.capacity());
v.addElement(new Integer(11));
v.addElement(new Integer(12));
System.out.println("Первый элемент: " +
(Integer)v.firstElement());
System.out.println("Последний элемент: " +
(Integer)v.lastElement());
if(v.contains(new Integer(3)))
System.out.println("Вектор содержит 3.");
// перечислить элементы в векторе.
Enumeration vEnum = v.elements();
System.out.println("\nЭлементы в векторе:");
while(vEnum.hasMoreElements())
System.out.print(vEnum.nextElement() + " ");
System.out.println();
}
}
Результат компиляции и выполнения приведенного выше примера выглядит следующим образом:
Initial size: 0 Initial capacity: 3 Capacity after four additions: 5 Current capacity: 5 Current capacity: 7 Current capacity: 9 First element: 1 Last element: 12 Vector contains 3. Elements in vector: 1 2 3 4 5.45 6.08 7 9.4 10 11 12Другие расширения
Структуры данных Java