Карта введение
Сопоставьте ключ к объекту значения. Карта не может содержать дублирующих клавиш; Каждый ключ может сопоставить только одно значение больше всего. Этот интерфейс заменяет класс словаря, который является полностью абстрактным классом, а не интерфейсом.
Интерфейс карты содержит три представления сбора, которые позволяют просматривать содержимое карты в форме набора клавиш, набора значений или набора отношений сопоставления клавиш. Порядок отображения определяется как порядок, в котором итератор возвращает свои элементы в представлении сбора карты. Некоторые реализации отображения явно гарантируют их порядок, такие как класс TreeMap; Другие не гарантируют свой порядок, например, класс HashMap.
Примечание. При использовании изменяющихся объектов необходимо принять дополнительную помощь в качестве клавиш отображения. Когда объект является ключом в карте, если значение объекта изменяется таким образом, чтобы влиять на сравнение равных, поведение карты будет неопределенным. Особый случай, который это запрещает, заключается в том, что карта не позволяет включать в себя в качестве ключа. Хотя карта разрешена включать себя как значение, будьте осторожны: определение равных и методов хэшкодов больше не будет четко явным на таких картах.
Все общие классы реализации отображения должны предоставлять два «стандартных» конструктора: конструктор void (без параметра) для создания пустых карт; и конструктор с одним параметром типа карты для создания новой карты с тем же отношением отображения клавиш, что и его параметры. Фактически, последний конструктор позволяет пользователю копировать произвольные карты для создания эквивалентной карты требуемого класса. Хотя это предложение не может быть применено (поскольку интерфейс не может содержать конструкторы), все общие реализации отображения в JDK следуют по нему.
Методы «уничтожения», содержащиеся в этом интерфейсе, изменяют отображение его операций, и если это отображение не поддерживает операцию, эти методы будут выбросить UnsupportedOperationException. Если это так, то эти методы могут (но не требуют) бросить UnsupportedOperationException, когда вызов является недействительным для отображения. Например, если немодифицированная карта, отношение картирования которой «перекрывается», пусто, исключение может быть брошено (но не требуется) при вызове метода Putall (MAP) на карту.
Некоторые реализации отображения имеют ограничения на ключи и значения, которые могут быть включены. Например, некоторые реализации запрещают нулевые ключи и значения, другие имеют ограничения на тип своих ключей. Попытка вставить неквалифицированный ключ или ценность вызовет неконтролируемое исключение, обычно NullPointerException или ClassCastException. Попытка запрашивать, может ли неспособный ключ или значение добавить исключение или вернуть ложь; Некоторые реализации будут демонстрировать первое поведение, в то время как другие будут демонстрировать последнее. Вообще говоря, при попытке выполнить операцию на неквалифицированном ключе или значении, и завершение операции не приводит к тому, что неквалифицированный элемент был вставлен в карту, может быть брошено исключение, или операция может быть успешной, в зависимости от самой реализации. Такие исключения помечены «необязательными» в спецификации этого интерфейса.
Этот интерфейс является членом фреймворта с коллекциями Java.
Многие методы в интерфейсе каркаса коллекций определяются в соответствии с методом Equals. Например, спецификация метода SonatainsKey (ключ объекта) гласит: «вернуть истину, если и только тогда, когда эта карта содержит соотношение отображения для ключа k, который удовлетворяет (ключ == null? K == null: key.equals (k)). Эта спецификация не должна интерпретироваться как: call.containainskey с ключом не нулевой параметры. Равенное, примером, вы можете сначала сравнить хэш -коды двух ключей (объект. Спецификация HashCode гарантирует, что два объекта, чьи хэш -коды не являются равными, не будут равны, например, реализации различных интерфейсов сборов рассматривают его.
Общие инструкции по эксплуатации недействительны ()
Удалите все отношения отображения с этой карты (необязательное действие).
Boolean Constainskey (объектный ключ)
Возвращает True, если эта карта содержит отношение отображения для указанного ключа.
Boolean содержит Value (значение объекта)
Возвращает True, если эта карта отображает один или несколько ключей к указанному значению.
SET <Map.Entry <K, v >> intrySet ()
Возвращает установленное представление о отношениях отображения, содержащихся на этой карте.
логическое равное (объект o)
Сравните, равен ли указанный объект этой карте.
V get (объектный ключ)
Возвращает значение, отображаемое указанным ключом; Если эта карта не содержит отношения отображения ключа, верните NULL.
int hashcode ()
Возвращает значение кода хэша для этой карты.
логический isempty ()
Верните True, если эта карта не содержит отношения картирования клавиш.
Set <k> keyset ()
Возвращает установленное представление ключей, содержащихся на этой карте.
V Put (k Key, V значение)
Свяжите указанное значение с указанным ключом на этой карте (необязательное действие).
void putall (map <? Extends k ,? Extends v> m)
Скопируйте все отношения отображения с указанного отображения в эту карту (необязательное действие).
V Удалить (ключ объекта)
Если для ключа есть отношения отображения, он удален с этой карты (необязательно).
int size ()
Возвращает отношения картирования ключей и значения на этой карте.
Коллекция <v> значения ()
Возвращает представление о значениях, содержащихся на этой карте.
Общее использование карты
1. Объявите карту:
Кода -копия выглядит следующим образом:
Карта карта = new hashmap ();
2. Поместите значение в карту. Примечание: карта хранится в форме ключевой стоимости, например:
Кода -копия выглядит следующим образом:
map.put ("sa", "dd");
3. Возьмите значение с карты:
Кода -копия выглядит следующим образом:
String str = map.get ("sa"). Tostring,
Результат: str = "dd '
4. Обратитесь через карту и получите от нее ключ и значение:
Кода -копия выглядит следующим образом:
Карта m = new hashmap ();
for (Object obj: map.keyset ()) {
Значение объекта = map.get (obj);
}