Наследование и классы-коллекции
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.
Как заполнить таблицу
Для заполнения объекта класса Hashtable используются два метода:
Object put(Object key, Object value) — добавляет пару "key — value", если ключа key не было в таблице, и меняет значение value ключа key, если он уже есть в таблице. Возвращает старое значение ключа или null, если его не было. Если хотя бы один параметр равен null, возникает исключительная ситуация;
void putAll(Map f) — добавляет все элементы отображения f. В объектах-ключах key должны быть реализованы методы hashCode() и equals ().
Как получить значение по ключу
Метод get (Object key) возвращает значение элемента с ключом key в виде объекта класса Object. Для дальнейшей работы его следует преобразовать к конкретному типу.
Как узнать наличие ключа или значения
Логический метод containsKey(Object key) возвращает true, если в таблице есть ключ key.
Логический метод containsvalue (Object value) или старый метод contains (Object value) возвращают true, если в таблице есть ключи со значением value.
Логический метод isEmpty() возвращает true, если в таблице нет элементов.
Как получить все элементы таблицы
Метод values()представляет все значения value таблицы в виде интерфейса Collection. Все модификации в объекте collection изменяют таблицу, и наоборот.
Метод keyset() предоставляет все ключи key таблицы в виде интерфейса set. Все изменения в объекте set корректируют таблицу, и наоборот.
Метод entrySet() представляет все пары "key — value" таблицы в виде интерфейса Set. Все модификации в объекте Set изменяют таблицу, и наоборот.
Метод toString() возвращает строку, содержащую все пары.
Как удалить элементы
Метод remove (Object key) удаляет пару с ключом key, возвращая значение этого ключа, если оно есть, и null, если пара с ключом key не найдена.
Метод clear() удаляет все элементы, очищая таблицу.
Пример программы «Телефонный справочник».
import java.util.*;
class PhoneBook{
public static void main(String[] args){
Hashtable yp = new Hashtable();
String name = null;
yp.put("John", "123-45-67");
yp.put ("Lemon", "567-34-12");
yp.put("Bill", "342-65-87");
yp.put("Gates", "423-83-49");
yp.put("Batman", "532-25-08");
try{
name = args[0];
}
catch(Exception e){
System.out.println("Usage: Java PhoneBook Name");
}
return;
}
if (yp.containsKey(name))
System.out.println(name + "'s phone = " + yp.get(name));
else
System.out.println("Sorry, no such name");
)
}
Класс Properties
Класс Properties расширяет класс Hashtable. Он предназначен в основном для ввода и вывода пар свойств системы и их значений. Пары хранятся в виде строк типа String. В классе Properties два конструктора:
Properties() — создает пустой объект;
Properties (Properties default) — создает объект с заданными парами свойств default.
Кроме унаследованных от класса Hashtable методов в классе Properties есть еще следующие методы.
Два метода, возвращающих значение ключа-строки в виде строки:
• String getProperty (String key) — возвращает значение по ключу key;
• String getProperty(String.key, String defaultValue) — возвращает значение по ключу key; если такого ключа нет, возвращается defaultValue.
Метод setProperty(String key, String value) добавляет новую пару, если ключа key нет, и меняет значение, если ключ key есть.
Метод load(Inputstream in) загружает свойства из входного потока in.
Методы list(PrintStream out) И list (PrintWriter out) выводят свойства в выходной поток out.
Метод store (OutputStream out, String header) выводит свойства в выходной поток out с заголовком header.
Другие рефераты на тему «Программирование, компьютеры и кибернетика»:
Поиск рефератов
Последние рефераты раздела
- Основные этапы объектно-ориентированного проектирования
- Основные структуры языка Java
- Основные принципы разработки графического пользовательского интерфейса
- Основы дискретной математики
- Программное обеспечение системы принятия решений адаптивного робота
- Программное обеспечение
- Проблемы сохранности информации в процессе предпринимательской деятельности