Главная страница

Java. Полное руководство. 8-е издание. С. Н. Тригуб Перевод с английского и редакция


Скачать 25.04 Mb.
НазваниеС. Н. Тригуб Перевод с английского и редакция
АнкорJava. Полное руководство. 8-е издание.pdf
Дата28.02.2017
Размер25.04 Mb.
Формат файлаpdf
Имя файлаJava. Полное руководство. 8-е издание.pdf
ТипДокументы
#3236
страница41 из 90
1   ...   37   38   39   40   41   42   43   44   ...   90
Глава 17. Пакет java.util: инфраструктура Collections Fram ew ork
5 0 3
Метод
Описание
void c l e a r ()
boolean
containsKey(Object к
boolean
containsValue(Object v)
Set>
entr y S e t ()
boolean equals(Object объект get(Object

k)
int h a s h C o d e ()
boolean i s E m p t y O
Set k e y S e t ()
V put (К
k,
V
v)
void putAll(Map
extends K,
? extends V>
m)
V remove(Object
k)
int size()
Collection v a l u e s (Удаляет все пары “ключ-значение” из вызывающей карты
Возвращает значение
true, если вызывающая карта содержит ключ кВ противном случае возвращает значение Возвращает значение
true, если вызывающая карта содержит значение
v. В противном случае возвращает значение
false
Возвращает набор, содержащий все значения карты. Набор содержит объекты интерфейса М ар. То есть этот метод представляет карту в виде набора
Возвращает значение
true, если объект —

это карта, содержащая одинаковые значения. В противном случае возвращает значение Возвращает значение, ассоциированное с ключом к Возвращает значение
null, если ключ не найден
Возвращает хеш-код вызывающей карты
Возвращает значение
true, если вызывающая карта пуста.
В противном случае возвращает значение Возвращает набор, содержащий ключи вызывающей карты. Этот метод представляет ключи вызывающей карты в виде набора
Помещает элемент в вызывающую карту, перезаписывая любое предшествующее значение, ассоциированное с ключом. Ключи значение — это к и
v
соответственно. Возвращает значение
null, если ключ ранее не существовал. В противном случае возвращается предыдущее значение, связанное с ключом
Помещает все значения изв карту
Удаляет элемент, ключ которого равен
к
Возвращает количество пар “ключ-значение” в карте
Возвращает коллекцию, содержащую значения карты. Этот метод представляет содержащиеся в карте значения в виде коллекции
Карты вращаются вокруг двухосновных операторов g e t () и p u t (). Чтобы поместить значение в карту, используйте метод p u t ( ), указав ключи значение. Чтобы получить значение, вызовите метод g e t (), передавая ключ в качестве аргумента. Значение будет возвращено.
Как упоминалось ранее, несмотря на то что карты являются частью инфраструктуры коллекций, сами по себе они не реализуют интерфейс C o l l e c t i o n . Однако вы можете получить представление карт в виде коллекций. Для этого можно воспользоваться методом e n t r y S e t ( ), который возвращает набор, содержащий элементы карты. Чтобы получить коллекционное представление ключей, используйте метод k e y S e t (). Чтобы получить коллекционное представление значений, используйте метод v a l u e s (). Коллекционные представления — это средства, которыми карты интегрируются в большую инфраструктуру коллекций

5 0 Часть II. Библиотека Интерфейс Этот интерфейс расширяет интерфейс
Мар. Он гарантирует, что элементы размещаются в возрастающем порядке значений ключей. Интерфейс
SortedM ap — это обобщенный интерфейс, объявленный так, как показано ниже SortedMapК

указывает тип ключей, а У — тип хранимых значений.
Методы, объявленные в интерфейсе
S o r t edMap, собраны в табл. 17.14. Некоторые методы передают исключение
N oSuchElem entException, когда вызывающая карта пуста. Исключение
C la s s C a stE x c e p t io n передается при несовместимости объекта с элементами, хранящимися в карте. Исключение
N u llP o in te r E x c e p tio n передается при попытке использовать пустой объект, когда пустые объекты в данной карте недопустимы. Исключение
I I l e g a l Argument E xcep t io n передается при использовании неверного аргумента.
Таблица 17.14. Методы, определенные в интерфейсе
S o r t e d M a p
Метод
Значение Л super К
c o m p a r a t o r (Возвращает компаратор вызывающей отсортированной карты. Если карта использует естественный порядок, возвращается значение К Возвращает первый ключ вызывающей карты o r t e d M a p c K ,
V>
h e a d M a p (К
конец)
Возвращает отсортированную карту, содержащую те элементы вызывающей карты, ключ которых меньше
конец
К l a s t K e y Возвращает последний ключ вызывающей карты, V>
s u b M a К начало, К
конец)
Возвращает карту, содержащую элементы вызывающей карты, ключ которых больше или равен начало и меньше конец, V>

tailMap(K
начало)
Возвращает отсортированную карту, содержащую те элементы вызывающей карты, ключ которых больше
на чало
О тсортированные карты обеспечивают очень эффективное манипулирование
подкартами (другими словами, подмножествами карты. Чтобы получить подкар- ту, используйте методы headM ap (), t a i lM a p () или subMap (). Подкарта, возвращенная этими методами, поддерживается вызывающей картой. При изменении одной меняется другая. Чтобы получить первый ключ набора, вызывайте метод f i r s t Key (). Чтобы получить последний ключ — применяйте метод l a s t Key (Интерфейс Интерфейс
N avigableM ap расширяет интерфейс SortedM ap и определяет поведение карты, поддерживающей извлечение элементов на основе ближайшего соответствия заданному ключу или ключам. Интерфейс это обобщенный интерфейс со следующим объявлением NavigableMapК
определяет тип ключей, а У тип значений, ассоциированных с ключами. В дополнение к методам, унаследованным от интерфейса
SortedM ap, интерфейс
N avigableM ap добавляет методы, перечисленные в табл. 17.15. Некоторые методы
Глава 17. Пакет java.util: инфраструктура Collections Fram ew ork
5 0 передают исключение
C la s s C a st E x c e p tio n , когда объект несовместим с ключами карты. Исключение
N u llP o in te r E x c e p tio n передается при попытке использования пустого объекта, когда пустые ключи не допускаются в наборе. Исключение
I I l e g a l Argument E xcep t io n передается при неправильном аргументе.
Таблица 17.15. Методы, определенные в интерфейсе a v i g a b l e M a p
Метод
Значение
Map.EntrycK, V>
c e i l i n g E n t r y (К
объ ект)
К ceilingKey(K объект e n d i n g M a p ()
Map.EntrycK, V>
f i r s t E n t r y ()
Map.EntrycK, V>
floorEntry(K
объ ект)
К floorKey(K объект (Кв ер х н Граница включать, V>
higherEntry (К
объ ект)
К higherKey(K объект
объ ект)
Выполняет поиск в карте наименьшего ключа к,
такого, что к>-объект.
Если такой ключ найден, возвращается соответствующее ему значение, в противном случае возвращается значение
nul Выполняет поиск в карте наименьшего ключа к, такого, что к>-объект.
Если такой ключ найден, он возвращается, в противном случае возвращается значение Возвращает объект интерфейса
NavigableSet, содержащий ключи вызывающей карты в обратном порядке.
То есть он возвращает обратное представление ключей. Результирующий набор основан на вызывающей карте
Возвращает объект интерфейса
NavigableSet, обратный вызывающей карте
Возвращает первое вхождение в карте. Это будет вхождение с минимальным ключом. Результирующий набор основан на вызывающей карте
Выполняет поиск в карте наибольшего ключа к,
такого, что к
=
объект.
Если такой ключ найден, возвращается соответствующее ему значение, в противном случае возвращается значение Выполняет поиск в карте наибольшего ключа к,
такого, что к
=
объект.
Если такой ключ найден, он возвращается, в противном случае возвращается значение Возвращает объект интерфейса
NavigableSet, включающий все вхождения вызывающей карты, имеющей ключи, меньшие верхнГраниц а.
Если параметр включать содержит значение
true, то элемент, равный верх н Граница, включается. Результирующий набор основан на вызывающей карте
Выполняет поиск в наборе наибольшего ключа, такого, что к>объ ект.
Если такой ключ найден, возвращается соответствующее ему значение. В противном случае возвращается значение Выполняет поиск в наборе наибольшего ключа, такого, что к>объ ект.
Если такой ключ найден, он возвращается. В противном случае возвращается значение Возвращает последнее вхождение в карте. Это будет значение с наибольшим ключом
Выполняет поиск в наборе наибольшего ключа, такого, что к<объ ект.
Если такой ключ найден, возвращается соответствующее ему значение. В противном случае возвращается значение
null

5 0 Часть II. Библиотека Окончание табл. 17.15
Метод
Значение
К lowerKey(K объект avigableSet
navigableKeySet (]
Map.Entry
p o l l F i r s t E n t r y ()
Map.Entry
p o l l L a s t E n t r y ()
NavigableMap
s u b M a p (К ниж н Граница
вклю чатьНижн
,
К верх н Граница вкл ю чатьВ ер хн)
NavigableMapcK, V>
t
a
i l M a p (К ниж н Граница
включать)
Выполняет поиск в наборе наибольшего ключа, такого, что
к<объект.
Если такой ключ найден, он возвращается.
В противном случае возвращается значение n u l Возвращает объект интерфейса
NavigableSet, содержащий ключи вызывающей карты. Результирующий набор основан на вызывающей карте
Возвращает первое вхождение, удаляя его в процессе. Поскольку карта отсортирована, это будет вхождение с наименьшим ключом. При пустой карте возвращается значение Возвращает последнее вхождение, удаляя его в процессе. Поскольку карта отсортирована, это будет вхождение с наименьшим ключом. При пустой карте возвращается значение Возвращает объект интерфейса
NavigableSet, включающий все вхождения вызывающей карты, которая имеет ключи, меньшие в ерхнГраниц аи большие нижнГраница.
Если параметр включатьНижн содержит значение
true, то элемент, равный ниж нГраница
, включается. Если параметр вклю чатьВерхн содержит значение
true, то элемент, равный верх н Граница, включается. Результирующий набор основан на вызывающей карте
Возвращает объект интерфейса
NavigableSet, включающий все вхождения вызывающей карты, имеющей ключи, большие нижнГраница.
Если параметр включать содержит значение
true, то элемент, равный ниж нГраница
, включается. Результирующий набор основан на вызывающей карте
И нтерф ейс М ар Этот интерфейс позволяет работать с элементом карты. Вспомните, что метод e n t r y S e t ( ) , объявленный в интерфейсе Мар, возвращает набор, содержащий элементы карты. Каждый элемент этого набора представляет собой объект интерфейса
Мар. E n try . Интерфейс Мар. E n try является обобщенными объявлен следующим образом terface Мар . Entry<_FC, Здесь К
указывает тип ключей, а тип хранимых значений. В табл. 17.16 перечислены методы, объявленные в интерфейсе
Мар. E n Таблица 17.16. Методы, определенные в интерфейсе

M a p . E n t r y
Метод
Значение
boolean
Возвращает значение
true, если объект —
это объект интерфейса .Entry, ключи значение которого эквивалентны вызывающему
объект)
объекту
К g e t K e y (Возвращает ключ данного элемента карты g e t V a l u e Возвращает значение данного элемента карты h a s h C o d e (Возвращает хеш-код данного элемента карты
Глава 17. Пакет java.util: инфраструктура Collections Fram ew ork
5 0 Окончание табл. Метод ________ Значение setValue(V Устанавливает значение данного элемента карты равным Если VHe относится к типу, допустимому для данной карты, передается исключение С
las
sCast
Except
ion. Исключение
II
legal
Argument
Except
ion передается при возникновении проблемы с
v. Исключение
NullPointerException передается, если параметр содержит значение
null, а карта не допускает хранения пустых ключей. Исключение
UnsupportedOperationExcept
ion
___________________ передается, если карта не может быть модифицирована_____________
Классы карт
Реализацию интерфейсов карт предлагают несколько классов. Классы, которые могут быть использованы для карт, перечислены в табл. Следует отметить, что класс
A b s
t r a c t М ар это суперкласс для всех конкретных реализаций карт.
Класс
W e a k H a s h M a p реализует карту, которая использует слабые ключи, что позволяет элементу карты быть объектом, подлежащим сбору мусора, когда его ключ никак не используется. Этот класс подробно здесь не обсуждается. Прочие классы карт описаны ниже.
Таблица 17.17. Классыр которые могут использоваться для карт
Класс Описание Реализует большую часть интерфейса Расширяет класс
AbstractMap для использования с ключами типа Расширяет класс
AbstractMap для использования хеш- таблицы
TreeMap
Расширяет класс
AbstractMap для использования дерева
WeakHashMap
Расширяет класс
AbstractMap для использования хеш- таблицы со слабыми ключами
LinkedHashMap
Расширяет класс
HashMap, разрешая перебор в порядке вставки
IdentityHashMap
Расширяет класс
AbstractMap и использует проверку ссылочной эквивалентности при сравнении документов
Класс Этот класс расширяет класс
A b s
t r a c t Мари реализует интерфейс
Мар. Он использует хеш-таблицу для хранения карты, что обеспечивает константное время выполнения методов
g e t (
) и
p u t
() даже при больших наборах. Класс
H a s h M a p
— это обобщенный класс со следующим объявлением HashMap<-FC, Здесь .Куказывает тип ключей, г V тип хранимых значений.
В классе определены следующие конструкторы.
HashMap()
HashMap(Мар т емкость емкость float
коэффЗаполнения)

5 0 Часть II. Библиотека Первая форма создает хеш-карту по умолчанию. Вторая форма инициирует хеш-карту элементами т Третья форма инициирует емкость хеш-карты величиной емкость Четвертая форма инициализирует и емкость, и коэффициент заполнения хеш-карты, используя аргументы конструктора. Значение емкости и коэффициента заполнения — тоже самое, что ив классе
HashSet, описанном ранее. Емкость по умолчанию — 16, коэффициент заполнения — Класс
HashMap реализует интерфейс Мари расширяет класс
AbstractMap. Он не добавляет никаких собственных методов.
Следует отметить, что хеш-карта не гарантирует порядка элементов. Таким образом, порядок, в котором элементы добавляются к хеш-карте, необязательно соответствует порядку, в котором они читаются итератором. В следующей программе иллюстрируется применение класса
HashMap. Она соотносит имена вкладчиков с балансовыми счетами. Обратите внимание на то, как получается и используется представление в виде набора java.util.*;

class HashMapDemo {
public static void main(String a r g s []) {
// Создать хеш-карту.
HashMap hm = new HashMap
Double>();
// Поместить элементы в карту. p u t (Джон Доу", new Do u b l e (3434.34));
hm. p u t (Том Смит", new Doub l e (12 3.22));
h m . p u t ("Джейн Бейкер", new Double(1378.00));
hm.put("Tofl Холл, new Double(99.22));
h m . p u t ("Ральф Смит", new D o uble(-19.08));
// Получить набор элементов, Double>> set = hm.entrySet();
// Отобразить набор Double> me :
set) {
System.out.print(me.g e tKey() +
");
System.out.println(me.getValue());
}
System.out.println();
// Добавить 1000 насчет Джона Доу.
double balance = Ь т . де МДж он Доу");
1ш1.риМ"Джон Доу ", balance + Новый баланс Джона Доу: " +
h m .g e t (Джон До у "Вывод этой программы показан здесь (точный порядок может отличаться).
Ральф Смит: -Том См и т :
12 Джон Доу: 3434.34
Тод Холл 99.22
Джейн Бейкер: 13 7 Новый баланс Джона Доу: Программа начинается с создания хеш-карты с последующим соотнесением имен с балансами. Затем содержимое карты соотносится с представлением карты в виде набора, полученного от метода entrySet ()
. Ключи и значения соотносятся при помощи вызовов методов getKey
() и getValue ()
, которые определены
Глава 17. Пакет java.util: инфраструктура Collections Fram ew ork
5 0 в интерфейсе
Map.
Entry. Обратите особое внимание на то, как депозит помещается насчет Джона Доу. Метод put
() автоматически замещает любое предварительно существовавшее значение, ассоциированное с указанным ключом, новым значением. Таким образом, после того как счет Джона Доу обновлен, хеш-карта по-прежнему содержит только один счет Джона Доу.
Класс
ТгееМар
Класс
ТгееМар расширяет класс
AbstractMap и реализует интерфейс
NavigableMap. Он создает карту, размещенную в древовидной структуре. Класс
ТгееМар предлагает эффективный способ хранения пар “ключ-значение” вот сортированном порядке и обеспечивает быстрое извлечение. Следует отметить, что, в отличие от хеш-карты, карта-дерево (tree-map) гарантирует, что ее элементы будут отсортированы в порядке возрастания ключей. Класс
ТгееМар является обобщенным классом со следующим объявлением Т г ее М ар К 7 Здесь К указывает тип ключей, а У
— тип хранимых значений. В классе
ТгееМар определены следующие конструкторы.
Т г ее М ар (Т г ее М ар К
компаратор
)
Тге еМа р(Мар Т г ее М ар Первая форма создает пустую карту-дерево, которая будет отсортирована с использованием естественного порядка ключей. Вторая форма создает пустую карту, основанную на дереве, которая будет отсортирована с применением компаратора
Comparator компаратор. (Компараторы обсуждаются далее в настоящей главе) Третья форма инициализирует карту-дерево с элементами из т, которые будут отсортированы по естественному порядку ключей. Четвертая форма создает карту-дерево с элементами из sm, которые будут отсортированы в том же порядке, что и Класс
ТгееМар не определяет дополнительных методов карты, помимо тех, что имеются в интерфейсе
NavigableMap и классе
AbstractMap. В следующей программе предыдущий пример переделан для использования класса
ТгееМар.
1   ...   37   38   39   40   41   42   43   44   ...   90


написать администратору сайта