Pár, alebo pár, poskytuje pohodlný spôsob spracovania jednoduchých asociácií kľúč-hodnota, čo je obzvlášť užitočné, keď chceme vrátiť dve hodnoty z metódy. JDK obsahuje interné triedy: AbstractMap.SimpleEntry a AbstractMap.SimpleImmutableEntry
1. SimpleEntry je definovaný v abstraktnej triede AbstractMap a jeho spôsob konštrukcie je podobný metóde Pair.
2. Trieda AbstractMap tiež obsahuje vnorenú triedu, ktorá predstavuje nemenný pár: triedu SimpleImmutableEntry.
/** * Záznam zachovávajúci nemenný kľúč a hodnotu. Táto trieda * nepodporuje metódu <tt>setValue</tt>. Táto trieda môže byť * pohodlné v metódach, ktoré vracajú bezpečné snímky z * mapovania kľúč-hodnota. * * @since 1,6 */ public static class SimpleImmutableEntry<K,V> implements Entry<K,V>, java.io.Serializable { súkromný statický final long serialVersionUID = 7138329143949025153L;
súkromný záverečný kláves K; súkromná finálna hodnota V;
/** * Vytvára položku reprezentujúcu mapovanie zo špecifikovaného * kľúč k zadanej hodnote. * * @param kľúč je kľúč reprezentovaný týmto záznamom * @param hodnotu hodnotu reprezentovanú týmto záznamom */ public SimpleImmutableEntry(K key, V value) { this.key = kľúč; this.value = value; }
/** * Vytvára položku reprezentujúcu rovnaké zobrazenie ako * špecifikovaný záznam. * * @param záznam zápis na kopírovanie */ public SimpleImmutableEntry(Entry<? rozširuje K, ? rozširuje V> entry) { this.key = entry.getKey(); this.value = entry.getValue(); }
/** * Vráti kľúč zodpovedajúci tomuto záznamu. * * @return kľúč zodpovedajúci tomuto záznamu */ public K getKey() { kláves return; }
/** * vráti hodnotu zodpovedajúcu tomuto záznamu. * * @return hodnota zodpovedajúca tomuto záznamu */ public V getValue() { návratnosť; }
/** * Nahradí hodnotu zodpovedajúcu tomuto prvku špecifikovanou * hodnota (voliteľná operácia). Táto implementácia jednoducho vyhodí * <tt>UnsupportedOperationException</tt>, ako táto trieda implementuje * <i>nemenný</i> záznam na mape. * * @param nová hodnota bude uložená v tomto zázname * @return (Nevracia sa) * @throws UnsupportedOperationException vždy */ public V setValue(V value) { throw new UnsupportedOperationException(); }
/** * Porovnáva špecifikovaný objekt s týmto prvkom pre rovnosť. * Returns {@codepravda} ak daný objekt je zároveň mapovým prvkom a * obe položky predstavujú rovnaké zobrazenie. Formálnejšie, dva * prvky {@code e1} a {@code e2} predstavujú rovnaké zobrazenie *ak<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 zabezpečuje, že metóda {@code rovná sa} funguje správne naprieč * rôzne implementácie rozhrania {@code Map.Entry}. * * @param objekt na porovnanie rovnosti s týmto mapovým záznamom * @return {@code true} ak je špecifikovaný objekt rovný tomuto zobrazeniu *položka * @see #hashCode */ verejný boolean sa rovná(Objekt o) { ak (!( o instanceof Map.Entry)) return false; Map.Entry<?,?> e = (Map.Entry<?,?>)o; return eq(key, e.getKey()) & eq(value, e.getValue()); }
/** * Vráti hodnotu hash kódu pre tento mapový záznam. Hašovací kód * mapového záznamu {@code e} je definovaný ako: <pre> * (e.getKey()==null ? 0 : e.getKey().hashCode()) ^ * (e.getValue()==null ? 0 : e.getValue().hashCode())</pre> * To zabezpečuje, že {@code e1.rovná sa(e2)} implikuje, že * {@code e1.hashCode()==e2.hashCode()} pre ľubovoľné dva položky * {@code e1} a {@code e2}, ako vyžaduje všeobecný * zmluva {@linkObjekt#hashKód}. * * @return hodnotu hash kódu pre tento mapový záznam * @see #equals */ public int hashCode() { return (key == null ? 0 : key.hashCode()) ^ (value == null ? 0 : value.hashCode()); }
/** * Vráti reťazcovú reprezentáciu tohto mapového záznamu. Toto * implementácia vráti reťazcovú reprezentáciu tohto * kľúč prvku nasledovaný znakom rovnosti ("<tt>=</tt>") * nasledovaná reťazcovou reprezentáciou hodnoty tohto prvku. * * @return reťazcová reprezentácia tohto mapového záznamu */ public String toString() { return kľúč + "=" + hodnota; }
} SimpleImmutableEntry hodí java.lang, ak sa pokúsi upraviť hodnotu, volajúc metódu setValue.NepodporovanáOperáciaVýnimkaAbnormálny.
Kód:
|