Класс Java Vector

Класс Vector реализует динамический массив. Он похож на ArrayList, но между ними есть различия:

ОсобенностиВекторArrayList
СинхронизацияСинхронизированный (потокобезопасный)Несинхронизированный
ПроизводительностьМедленнееБыстрее
Приращение ёмкостиМожно задатьФиксированное (50%)
Iteratorfail-fastfail-fast
Введено в версииJava 1.0Java 1.2

Возможности:

  1. Синхронизированный: Vector потокобезопасен, все методы синхронизированы

  2. Динамическое расширение: Автоматически увеличивается, когда количество элементов превышает текущую ёмкость

  3. Устаревший класс: Хотя он всё ещё может использоваться, обычно рекомендуется ArrayList

  4. Реализует интерфейс 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() 
Урезает емкость этого вектора до величины, равной текущему размеру вектора.

Пример

Следующая программа иллюстрирует несколько методов, поддерживаемых этой коллекцией:

Пример

import java.util.*;

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 数据结构Структуры данных Java

Другие расширения