Пара, або пара, забезпечує зручний спосіб обробки простих асоціацій ключ-значення, що особливо корисно, коли ми хочемо повернути два значення з методу. JDK має внутрішні класи: AbstractMap.SimpleEntry та AbstractMap.SimpleImmutableEntry
1. SimpleEntry визначений у абстрактному класі AbstractMap, а його метод побудови схожий на метод Pair.
2. Клас AbstractMap також містить вкладений клас, який представляє незмінну пару: клас SimpleImmutableEntry.
/** * Запис, що зберігає незмінний ключ і значення. Цей клас * не підтримує метод <tt>setValue</tt>. Цей клас може бути * зручний у методах, які повертають безпечні для потоку знімки * відображення ключів і значень. * * @since 1.6 */ публічний статичний клас SimpleImmutableEntry<K,V> реалізує Entry<K,V>, java.io.Serializable { приватний статичний фінальний довгий серіалVersionUID = 7138329143949025153L;
приватний фінальний ключ K; приватне фінальне значення V;
/** * Створює запис, що представляє відображення з заданого * ключ до вказаного значення. * * @param тональність — ключ, представлений цим записом * @param значення, яке представлено цим записом */ public SimpleImmutableEntry(ключ K, значення V) { this.key = ключ; this.value = значення; }
/** * Створює запис, що представляє те саме відображення, що й * вказаний запис. * * @param запис для копіювання */ public SimpleImmutableEntry(Entry<? extends K, ? extend V> entry) { this.key = entry.getKey(); this.value = entry.getValue(); }
/** * Повертає ключ, що відповідає цьому елементу. * * @return тональність, що відповідає цьому запису */ public K getKey() { клавіша Return; }
/** * Повертає значення, що відповідає цьому елементу. * * @return значення, що відповідає цьому запису */ public V getValue() { повернення значення; }
/** * Замінює значення, що відповідає цьому запису, на задане * значення (опціональна операція). Ця реалізація просто кидає <tt>* UnsupportedOperationException</tt>, як це реалізує цей клас * <i>незмінний</i> запис карти. * * @param значення нового значення, яке зберігається в цьому записі * @return (Не повертається) * @throws UnsupportedOperationException завжди */ public V setValue(V value) { викинути новий UnsupportedOperationException(); }
/** * Порівнює вказаний об'єкт із цим записом для рівності. * Повернення {@codetrue}, якщо заданий об'єкт також є записом у відображенні, і * ці два елементи представляють однакове відображення. Більш формально — два * елементи {@code e1} та {@code e2} представляють однакове відображення *якщо<pre> * (e1.getKey()==null ? * e2.getKey()==null : * e1.getKey().equals(e2.getKey())) * && * (e1.getValue()==null ? * e2.getValue()==null : * e1.getValue().equals(e2.getValue()))</pre> * Це гарантує, що метод {@code equals} працює коректно поперек * різні реалізації інтерфейсу {@code Map.Entry}. * * @param o об'єкт для порівняння для рівності з цим елементом відображення * @return {@code істинно}, якщо заданий об'єкт дорівнює цьому відображенню *вхід * @see #hashCode */ публічні булеві рівні (Об'єкт o) { якщо (!( o екземпляр Map.Entry)) повернення хибно; Map.Entry<?,?> e = (Map.Entry<?,?>)o; return eq(key, e.getKey()) та & eq(value, e.getValue()); }
/** * Повертає значення хеш-коду для цього запису карти. Хеш-код * запису відображення {@code e} визначається так: <pre> * (e.getKey()==null ? 0 : e.getKey().hashCode()) ^ * (e.getValue()==null ? 0 : e.getValue().hashCode())</pre> * Це гарантує, що {@code e1.equals(e2)} означає, що * {@code e1.hashCode()==e2.hashCode()} для будь-яких двох записів * {@code e1} та {@code e2}, відповідно до вимог загального * контракт {@linkОб'єкт#хешКод}. * * @return значення хеш-коду для цього запису карти * @see #equals */ public int hashCode() { return (key == null ? 0 : key.hashCode()) ^ (value == null ? 0 : value.hashCode()); }
/** * Повертає рядкове представлення цього запису карти. Цей * реалізація повертає рядкове представлення цього * ключ запису, за яким слідує символ рівності ("<tt>=</tt>") * після чого слідує рядкове представлення значення цього запису. * * @return рядкове представлення цього запису карти */ public String toString() { return key + "=" + значення; }
} SimpleImmutableEntry викидає java.lang, якщо намагається змінити значення, викликаючи метод setValue.UnsupportedOperationExceptionНенормальні.
Код:
|