Ильдар Хабибуллин - Java 7 [Наиболее полное руководство]
- Название:Java 7 [Наиболее полное руководство]
- Автор:
- Жанр:
- Издательство:БХВ-Петербург
- Год:2012
- ISBN:978-5-9775-0735-6
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Ильдар Хабибуллин - Java 7 [Наиболее полное руководство] краткое содержание
Java 7 [Наиболее полное руководство] - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
В листинге 6.3 показано, как можно использовать класс Hashtable для создания телефонного справочника, а на рис. 6.1 — вывод этой программы.
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.
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 - ~
LStack
—AbstractSet 4----- = = - Set—
—HashSet ~ ~
LLinkedHashSet
_ 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 в данной коллекции;
□ boolean isEmpty() — проверяет, пуста ли коллекция;
□ Iterator iterator () — возвращает итератор данной коллекции;
□ boolean remove (Obj ect obj) — удаляет указанный элемент из коллекции; возвращает false, если элемент не найден, true, если удаление прошло успешно;
□ boolean removeAll(Collection coll) - удаляет элементы указанной коллекции, лежа
щие в данной коллекции;
□ boolean retainAll(Collection coll) -удаляет все элементы данной коллекции, кроме
элементов коллекции coll;
□ int size() — возвращает количество элементов в коллекции;
□ Obj ect [ ] toArray () — возвращает все элементы коллекции в виде массива;
□ Obj ect [ ] toArray (Obj ect[] a) — записывает все элементы коллекции в массив a, если в нем достаточно места.
Интерфейс List
Интерфейс List из пакета java.util, расширяющий интерфейс Collection, описывает методы работы с упорядоченными коллекциями. Иногда их называют последовательностями (sequence). Элементы такой коллекции пронумерованы, начиная от нуля, к ним можно обратиться по индексу. В отличие от коллекции Set элементы коллекции List могут повторяться.
Читать дальшеИнтервал:
Закладка: