Pár, nebo pár, poskytuje pohodlný způsob pro zpracování jednoduchých asociací klíč-hodnota, což je zvláště užitečné, když chceme z metody vrátit dvě hodnoty. JDK obsahuje interní třídy: AbstractMap.SimpleEntry a AbstractMap.SimpleImmutableEntry
1. SimpleEntry je definován v abstraktní třídě AbstractMap a jeho metoda konstrukce je podobná té u Pair.
2. Třída AbstractMap také obsahuje vnořenou třídu, která představuje neměnnou dvojici: třídu SimpleImmutableEntry.
/** * Záznam udržující neměnný klíč a hodnotu. Tato třída * nepodporuje metodu <tt>setValue</tt>. Tato třída může být * výhodné v metodách, které vracejí bezpečné snímky z * mapování klíč-hodnota. * * @since 1.6 */ public static class SimpleImmutableEntry<K,V> implements Entry<K,V>, java.io.Serializable { soukromý statický final long serialVersionUID = 7138329143949025153L;
soukromý závěrečný klávesový klíč K; soukromá konečná hodnota V;
/** * Vytváří položku reprezentující zobrazení ze specifikovaného * klíč k dané hodnotě. * * @param klíč tóninu reprezentovanou tímto záznamem * @param hodnotu hodnotu reprezentovanou tímto prvkem */ public SimpleImmutableEntry(K key, V value) { this.key = klíč; this.value = value; }
/** * Vytváří položku reprezentující stejné zobrazení jako * specifikovaný záznam. * * @param záznam záznam pro kopírování */ public SimpleImmutableEntry(Entry<? rozšiřuje K, ? rozšiřuje V> entry) { this.key = entry.getKey(); this.value = entry.getValue(); }
/** * Vrátí klíč odpovídající tomuto záznamu. * * @return klíč odpovídající tomuto záznamu */ public K getKey() { klávesa return; }
/** * Vrátí hodnotu odpovídající tomuto položce. * * @return hodnotu odpovídající tomuto záznamu */ public V getValue() { návratnost; }
/** * Nahradí hodnotu odpovídající tomuto prvku specifikovanou * hodnota (volitelná operace). Tato implementace jednoduše vyhodí * <tt>UnsupportedOperationException</tt>, jak tato třída implementuje * <i>neměnný</i> záznam na mapě. * * @param nová hodnota bude uložena v tomto záznamu * @return (Nevrací se) * @throws NepodporovanéOperační výjimky vždy */ public V setValue(V value) { throw new UnsupportedOperationException(); }
/** * Porovnává zadaný objekt s tímto položkou pro rovnost. * Returns {@codetrue} pokud je daný objekt také mapovým prvkem a * tyto dva záznamy představují stejné zobrazení. Formálněji řečeno, dva * prvky {@code e1} a {@code e2} představují stejné zobrazení *když<pre> * (e1.getKey()==null ? * e2.getKey()==null : * e1.getKey().equals(e2.getKey())) * && * (e1.getValue()==null ? * e2.getValue()==null : * e1.getValue().equals(e2.getValue()))</pre> * To zajišťuje, že metoda {@code rovná} funguje správně napříč * různé implementace rozhraní {@code Map.Entry}. * * @param objekt k porovnání pro rovnost s tímto mapovým záznamem * @return {@code true} pokud je specifikovaný objekt rovn tomuto zobrazení *položka * @see #hashCode */ veřejný boolean se rovná(Objekt o) { if (!( o instance Map.Entry)) return false; Map.Entry<?,?> e = (Map.Entry<?,?>)o; return eq(key, e.getKey()) & eq(value, e.getValue()); }
/** * Vrací hodnotu hash kódu pro tento záznam mapy. Hashovací kód * položky zobrazení {@code e} je definována jako: <pre> * (e.getKey()==null ? 0 : e.getKey().hashCode()) ^ * (e.getValue()==null ? 0 : e.getValue().hashCode())</pre> * To zajišťuje, že {@code e1.rovná se(e2)} implikuje, že * {@code e1.hashCode()==e2.hashCode()} pro libovolné dva položky * {@code e1} a {@code e2}, jak vyžaduje obecný * kontrakt {@linkObjekt#hashCode}. * * @return hodnotu hash kódu pro tento záznam na mapě * @see #equals */ public int hashCode() { return (key == null ? 0 : key.hashCode()) ^ (value == null ? 0 : value.hashCode()); }
/** * Vrátí řetězcovou reprezentaci tohoto mapového záznamu. Toto * implementace vrací řetězcovou reprezentaci tohoto * klíč položky následovaný znakem rovna ("<tt>=</tt>") * následovaná řetězcovou reprezentací hodnoty tohoto prvku. * * @return řetězcová reprezentace tohoto mapového záznamu */ public String toString() { return key + "=" + value; }
} SimpleImmutableEntry hodí java.lang, pokud se pokusí změnit hodnotu, a volá metodu setValue.Výjimka UnsupportedOperationExceptionAbnormální.
Kód:
|