В классе Vector из пакета java.util хранятся элементы типа Object, а значит, ссылки любого типа. Количество элементов может быть произвольным и не определяться заранее. Элементы получают индексы 0, 1, 2 и т. д. К каждому элементу вектора можно обратиться по индексу, как и к элементу массива.
Кроме количества элементов, называемого
В Java 2 класс Vector переработан так, чтобы включить его в иерархию классов-коллекций. Для этого добавлено много новых методов, реализующих методы соответствующих интерфейсов-коллекций. Сейчас многие действия можно совершать старыми и новыми методами. Рекомендуется использовать новые методы, поскольку старые могут быть исключены из следующих версий Java.
В классе четыре конструктора:
□ Vector () — создает пустой объект нулевой длины с емкостью в 10 элементов;
□ Vector (int capacity) -создает пустой объект указанной емкости capacity;
□ Vector (int capacity, int increment) - формирует пустой объект указанной емкости
capacity и задает число increment, на которое увеличивается емкость при необходимости;
□ Vector(Collection c) — вектор создается по указанной коллекции.
Если число capacity отрицательно, то возникает исключительная ситуация.
После создания вектора его можно заполнять элементами. В векторе разрешено хранить объекты разных типов, поскольку на самом деле в нем хранятся не значения объектов, а ссылки на них. Класс Vector настраиваемый, и если предполагается заполнять вектор ссылками одного и того же типа, то этот тип можно задать при создании вектора в шаблоне (generic) коренного типа, в угловых скобках, по такой схеме:
Vector
или, используя "ромбовидный оператор",
Vector
После этого определения компилятор будет следить за тем, чтобы у всех элементов вектора был тип String. Извлечение элементов из вектора не потребует приведения типа.
Метод add (Object element) позволяет добавить элемент в конец вектора (то же делает старый метод addElement (Obj ect element)).
Методом add(int index, Object element) или старым методом insertElementAt(Object element, int index) можно вставить элемент в указанное место index. Элемент, находившийся на этом месте, и все последующие элементы сдвигаются, их индексы увеличиваются на единицу.
Метод addAll(Collection coll) позволяет добавить в конец вектора все элементы коллекции coll.
Методом addAll (int index, Collection coll) возможно вставить в позицию index все элементы коллекции coll.
Вот пример создания и заполнения вектора:
Vector v = new Vector(); v.add(new Date()); v.add("CTpoKa символов"); v.add(new Integer(10)); v.add(20);
Обратите внимание в этом примере на две последние строки. Первая из них записана по канонам работы с коллекцией: в вектор вместо числа 10 заносится ссылка на объект класса Integer, содержащий это число. В последней строке применета автоматическая упаковка типа: в методе add() записывается просто число 20, метод сам создает необходимую ссылку.
Метод set(int index, Object element) заменяет элемент, стоявший в векторе в позиции index, на элемент element (то же самое позволяет выполнить старый метод
setElementAt(Object element, int index)).
Количество элементов в векторе всегда можно узнать методом size().
Метод capacity() возвращает емкость вектора.
Логический метод isEmpty() возвращает true, если в векторе нет ни одного элемента.
Обратиться к первому элементу вектора можно методом firstElement(), к последнему - методом lastElement (), к любому элементу- методом get (int index) или старым
методом elementAt (int index).
Эти методы возвращают объект класса Object. Перед использованием его следует привести к нужному типу, например:
String s = (String)v.get(1);
Если при создании вектора шаблоном был указан определенный тип элементов, например,
Vector
то возвращается объект именно этого типа и явное приведение типа не требуется, можно написать просто
String s = v.get(1);
Получить все элементы вектора в виде массива типа Object[] можно методами toArray() и toArray(Object[] a). Второй метод заносит все элементы вектора в массив a, если в нем достаточно места.
Логический метод contains(Object element) возвращает true, если элемент element находится в векторе.
Логический метод containsAll(Collection c) возвращает true, если вектор содержит все элементы указанной коллекции.