В классе vector из пакета java.utii хранятся элементы типа object, а значит, любого типа. Количество элементов может быть любым и наперед не определяться. Элементы получают индексы О, 1, 2, .... К каждому элементу вектора можно обратиться по индексу, как и к элементу массива.
Кроме количества элементов, называемого размером (size) вектора, есть еще размер буфера — емкость (capacity) вектора. Обычно емкость совпадает с размером вектора, но можно ее увеличить методом ensureCapacity(int minCapacity) или сравнять с размером вектора методом trimToSize().
Vector v = new Vector();
String s = "Строка, которую мы хотим разобрать на слова.";
StringTokenizer st = new StringTokenizer(s, " \t\n\r,.");
while (st.hasMoreTokens()){
// Получаем слово и заносим в вектор
v.add(st.nextToken()); // Добавляем в конец вектора
}
System.out.println(v.firstElement()); // Первый элемент
System.out.println(v.lastElement()); // Последний элемент
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();
Класс Stack
Класс stack из пакета java.utii. объединяет элементы в стек.
Стек (stack) реализует порядок работы с элементами подобно магазину винтовки— первым выстрелит патрон, положенный в магазин последним,— или подобно железнодорожному тупику — первым из тупика выйдет вагон, загнанный туда последним. Такой порядок обработки называется LIFO (Last In — First Out).
Перед работой создается пустой стек конструктором stack ().
Затем на стек кладутся и снимаются элементы, причем доступен только "верхний" элемент, тот, что положен на стек последним.
Проверка парности скобок
import java.utii.*;
class StackTesti
static boolean checkParity(String expression,
String open, String close){
Stack stack = new Stack ();
StringTokenizer st = new StringTokenizer(expression,
" \t\n\r+*/-(){}", true);
while (st..hasMoreTokens ()) {
String tmp = st.nextToken();
if (tmp.equals(open)) , stack.push(open);
if (tmp.equals(close)) stack.pop();
}
if (stack.isEmpty () ) return true/return false;
}
public static void main(String[] args){
System.out.println(
checkParityC'a - (b - (c - a) / (b + c) - 2) , "(", ")));
}
}
Класс Hashtable
Класс Hashtable расширяет абстрактный класс Dictionary. В объектах этого класса хранятся пары "ключ — значение".
Из таких пар "Фамилия И. О. — номер" состоит, например, телефонный справочник.
Еще один пример — анкета. Ее можно представить как совокупность пар "Фамилия — Иванов", "Имя — Петр", "Отчество — Сидорович", "Год рождения — 1975" и т. д.
Подобных примеров можно привести множество.
Каждый объект класса Hashtable кроме размера (size) — количества пар, имеет еще две характеристики: емкость (capacity) — размер буфера, ипоказатель загруженности (load factor) — процент заполненности буфера, по достижении которого увеличивается его размер.