key.
Логический метод containsValue(Object value) или старый метод contains(Object value) возвращают true, если в таблице есть ключи со значением value.
Логический метод isEmpty() возвращает true, если в таблице нет элементов.
Как получить все элементы таблицы Hashtable
Метод values ( ) представляет все значения value таблицы в виде объекта типа Collection. Все модификации в этом объекте изменяют таблицу, и наоборот.
Метод keySet () предоставляет все ключи key таблицы в виде объекта типа интерфейса Set. Все изменения в этом объекте типа Set корректируют таблицу, и наоборот.
Метод entrySet () представляет все пары "key — value" таблицы в виде объекта типа интерфейса Set. Все модификации в этом объекте типа Set изменяют таблицу, и наоборот.
Итак, таблицу типа Hashtable можно представить в трех формах: в виде коллекции значений, в виде множества ключей или в виде множества пар.
Метод toString () возвращает строку, содержащую все пары таблицы.
Старые методы elements () и keys () возвращают значения и ключи в виде интерфейса
Enumeration.
Как удалить элементы
Метод remove (Obj ect key) удаляет пару с ключом key, возвращая значение этого ключа, если оно есть, и null, если пара с ключом key не найдена.
Метод clear () удаляет все элементы, очищая таблицу.
В листинге 6.3 показано, как можно использовать класс Hashtable для создания телефонного справочника, а на рис. 6.1 — вывод этой программы.
Листинг 6.3. Телефонный справочник
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("Lennon", "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: j ava PhoneBook Name"); return;
}
if (yp.containsKey(name))
System.out.println(name + "’s phone = " + yp.get(name));
else
System.out.println("Sorry, no such name");
}
}
 |
Рис. 6.1.Работа с телефонной книгой |
Класс 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.
Очень простой листинг 6.4 и рис. 6.2 демонстрируют вывод всех системных свойств Java.
Листинг 6.4. Вывод системных свойств
class Prop{
public static void main(String[] args){
System.getProperties().list(System.out);
}
}
 |
Рис. 6.2. Системные свойства |
Примеры классов Vector, Stack, Hashtable, Properties показывают удобство классов-коллекций. Такое удобство и необходимость в коллекциях разных видов привели к тому, что для Java была разработана целая иерархия коллекций, получившая название Java Collections Framework. Она показана на рис. 6.3. Курсивом записаны имена интерфейсов. Пунктирные линии указывают классы, реализующие эти интерфейсы.
Все коллекции разбиты на четыре группы, описанные в интерфейсах List, Set, Queue и Map.
Примером реализации интерфейса List может служить описанный ранее класс Vector, примером реализации интерфейса Map — класс Hashtable.
Читать дальше
Конец ознакомительного отрывка
Купить книгу