Читаем Java 7 полностью

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.

Коллекции List, Set и Queue имеют много схожего, поэтому их общие методы вынесены в отдельный суперинтерфейс Collection.

Object

—AbstractCollection ■* Collection

—AbstractList Ч- - - - ^

^Vector -*r - ~

L Stack

—AbstractSet 4----- = = - Set—

—HashSet ~ ~

L LinkedHashSet

_ TreeSet __ SortedSet —

NavigableSet

—AbstractQueue -4- ----- - Queue -ArrayBlockingQueue BlockingQueue

- ConcurrentLinkedQueue

- DelayQueue

- LinkedBlockingQueue

- PriorityBlockingQueue

- PriorityQueue n

eque

^LinkedBlockingDeque BlockingDeque-J

_ ArrayDeque

Рис. 6.3. Иерархия классов и интерфейсов-коллекций

Интерфейс Map не входит в эту иерархию — по мнению разработчиков Java Collections Framework, отображения типа Map не являются коллекциями. Они показаны на рис. 6.4.

Object

Map

У

У

SortedMap —

' NavigableMap J

Map.Entry

-AbstractMap -4- — — — HashMap

L- LinkedHashMap -4-WeakHashMap —TreeMap _

-Arrays

Bitset ^

Collections

Dictionary — Hashtable — Properties

Рис. 6.4. Иерархия классов и интерфейсов-отображений

Все интерфейсы, входящие в Java Collections Framework, — настраиваемые (см. главу 4), их можно использовать как шаблоны классов, хранящих ссылки на элементы одного и того же типа.

Посмотрим, что, по мнению разработчиков Java API, должно содержаться в этих коллекциях.

Интерфейс Collection

Интерфейс Collection из пакета java.util описывает общие свойства коллекций List, Set и Queue. Он содержит методы добавления и удаления элементов, проверки и преобразования элементов:

□ boolean add (Obj ect obj) — добавляет элемент obj в конец коллекции; возвращает false, если такой элемент в коллекции уже есть, а коллекция не допускает повторяющиеся элементы; возвращает true, если добавление прошло удачно;

□ boolean addAll(Collection coll) - добавляет все элементы коллекции coll в конец

данной коллекции;

□ void clear () — удаляет все элементы коллекции;

□ boolean contains(Object obj) — проверяет наличие элемента obj в коллекции;

□ boolean containsAll(Collection coll) — проверяет наличие всех элементов коллекции coll в данной коллекции;

Перейти на страницу:

Все книги серии В подлиннике

Java 7
Java 7

Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др. Дано подробное изложение последней версии сервлетов, технологии JSP и библиотек тегов JSTL. Около двухсот законченных программ иллюстрируют рассмотренные приемы программирования. Приведена подробная справочная информация о классах и методах Core Java API.

Ильдар Шаукатович Хабибуллин

Программирование, программы, базы данных

Похожие книги

C# 4.0: полное руководство
C# 4.0: полное руководство

В этом полном руководстве по C# 4.0 - языку программирования, разработанному специально для среды .NET, - детально рассмотрены все основные средства языка: типы данных, операторы, управляющие операторы, классы, интерфейсы, методы, делегаты, индексаторы, события, указатели, обобщения, коллекции, основные библиотеки классов, средства многопоточного программирования и директивы препроцессора. Подробно описаны новые возможности C#, в том числе PLINQ, библиотека TPL, динамический тип данных, а также именованные и необязательные аргументы. Это справочное пособие снабжено массой полезных советов авторитетного автора и сотнями примеров программ с комментариями, благодаря которым они становятся понятными любому читателю независимо от уровня его подготовки. Книга рассчитана на широкий круг читателей, интересующихся программированием на C#.Введите сюда краткую аннотацию

Герберт Шилдт

Программирование, программы, базы данных