Учебное пособие: Наследование и классы-коллекции
v.setSize(4); // Уменьшаем число элементов
v.add("собрать."); // Добавляем в конец
// укороченного вектора
v.set(3, "опять"); // Ставим в позицию 3
for (int i = 0; i < v.sizeO; i++) // Перебираемвесьвектор
System.out.print(v.get(i) + " ");
System.out.println();
Класс Vector является примером того, как можно объекты класса Object, a значит, любые объекты, объединить в коллекцию. Этот тип коллекции упорядочивает и даже нумерует элементы. В векторе есть первый элемент, есть последний элемент. К каждому элементу обращаются непосредственно по индексу. При добавлении и удалении элементов оставшиеся элементы автоматически перенумеровываются.
Второй пример коллекции — класс Stack — расширяет кладе Vector.
Класс Stack
Класс Stack из пакета java.util. объединяет элементы в стек.
Стек (Stack) реализует порядок работы с элементами подобно магазину винтовки— первым выстрелит патрон, положенный в магазин последним,— или подобно железнодорожному тупику — первым из тупика выйдет вагон, загнанный туда последним. Такой порядок обработки называется LIFO (Last In — First Out).
Перед работой создается пустой стек конструктором Stack ().
Затем на стек кладутся и снимаются элементы, причем доступен только "верхний" элемент, тот, что положен на стек последним.
Дополнительно к методам класса vector класс Stack содержит пять методов, позволяющих работать с коллекцией как со стеком:
push (Object item) —помещает элемент item в стек;
pop () — извлекает верхний элемент из стека;
peek () — читает верхний элемент, не извлекая его из стека;
empty () — проверяет, не пуст ли стек;
search (Object item) — находит позицию элемента item в стеке. Верхний элемент имеет позицию 1, под ним элемент 2 и т. д. Если элемент не найден, возвращается — 1.
Еще один пример коллекции совсем другого рода — таблицы — предоставляет класс Hashtable.
Класс Hashtable
Класс Hashtable расширяет абстрактный класс Dictionary. В объектах этого класса хранятся пары "ключ — значение".
Из таких пар "Фамилия И. О. — номер" состоит, например, телефонный справочник.
Каждый объект класса Hashtable кроме размера (size) — количества пар, имеет еще две характеристики: емкость (capacity) — размер буфера, и показатель загруженности (load factor) — процент заполненности буфера, по достижении которого увеличивается его размер.
Как создать таблицу
Для создания объектов класс Hashtable предоставляет четыре конструктора:
Hashtable() — создает пустой объект с начальной емкостью в 101 элемент и показателем загруженности 0,75;
Hashtable (int capacity) — создает пустой объект с начальной емкостью capacity и показателем загруженности 0,75;
Hashtable(int capacity, float loadFactor) — создает пустой Объект с начальной емкостью capacity и показателем загруженности loadFactor;
Hashtable (Map f) — создает объект класса Hashtable, содержащий все элементы отображения f, с емкостью, равной удвоенному числу элементов отображения f, но не менее 11, и показателем загруженности 0,75.