Двойка, или двойка, предоставя удобен начин за обработка на прости асоциации между ключ и стойност, което е особено полезно, когато искаме да върнем две стойности от даден метод. JDK идва с вътрешни класове: AbstractMap.SimpleEntry и AbstractMap.SimpleImmutableEntry
1. SimpleEntry е дефиниран в абстрактния клас AbstractMap, а методът му на конструиране е подобен на този на Pair.
2. Класът AbstractMap съдържа и вложен клас, който представлява неизменяема двойка: класа SimpleImmutableEntry.
/** * Запис, поддържащ неизменим ключ и стойност. Този клас * не поддържа <tt>метода setValue</tt>. Този клас може да бъде * удобен в методи, които връщат снимки с нишки, безопасни * ключови стойностни съпоставяния. * * @since 1.6 */ публичен статичен клас SimpleImmutableEntry<K,V> implimplements Entry<K,V>, java.io.Serializable { частен статичен финален дълъг сериалVersionUID = 7138329143949025153L;
частен финален ключ K; частна крайна стойност V;
/** * Създава запис, представляващ отображение от зададеното * ключ към зададената стойност. * * @param тоналността, представена в този запис * @param стойност на стойността, представена от този запис */ public SimpleImmutableEntry(K key, V стойност) { this.key = ключ; това.стойност = стойност; }
/** * Създава запис, представящ същото отображение като * посочен запис. * * @param запис за копиране */ public SimpleImmutableEntry(Entry<? extend K, ? разширява V> entry) { this.key = entry.getKey(); this.value = entry.getValue(); }
/** * Връща ключа, съответстващ на този запис. * * @return тоналността, съответстваща на този запис */ public K getKey() { ключ за връщане; }
/** * Връща стойността, съответстваща на този запис. * * @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}, както изисква генералът * договор на {@linkObject#hashCode}. * * @return стойността на хеш кода за този запис в картата * @see #equals */ public int hashCode() { return (key == null ? 0 : key.hashCode()) ^ (стойност == null ? 0 : value.hashCode()); }
/** * Връща String представяне на този запис в картата. Този * имплементацията връща представянето на този низ * ключ за запис, последван от символа за равенство ("<tt>=</tt>") * последвано от представянето на стойността на този запис чрез низ. * * @return String представяне на този запис в картата */ public String toString() { return ключ + "=" + стойност; }
} SimpleImmutableEntry изхвърля java.lang, ако се опита да промени стойността, като извиква метода setValue.UnsupportedOperationExceptionАнормален.
Код:
|