Par ali par omogoča priročen način za obravnavo preprostih povezav med ključem in vrednostjo, kar je še posebej uporabno, kadar želimo iz metode vrniti dve vrednosti. JDK vsebuje notranje razrede: AbstractMap.SimpleEntry in AbstractMap.SimpleImmutableEntry
1. SimpleEntry je definiran v abstraktnem razredu AbstractMap, njegova metoda gradnje pa je podobna tisti pri Pair.
2. Razred AbstractMap vsebuje tudi gnezdeni razred, ki predstavlja nespremenljiv par: razred SimpleImmutableEntry.
/** * Vnos, ki ohranja nespremenljiv ključ in vrednost. Ta razred * ne podpira metode <tt>setValue</tt>. Ta razred je lahko * priročno v metodah, ki vračajo niti varne posnetke * preslikave ključ-vrednost. * * @since 1,6 */ javni statični razred SimpleImmutableEntry<K,V> implements Entry<K,V>, java.io.Serializable { zasebni statični zadnji long serialVersionUID = 7138329143949025153L;
zasebni končni ključ K; zasebna končna vrednost V;
/** * Ustvari vnos, ki predstavlja preslikavo iz določenega * ključ do določene vrednosti. * * @param ključ, ki ga predstavlja ta vnos * @param vrednost vrednosti, ki jo predstavlja ta vnos */ public SimpleImmutableEntry(K key, V vrednost) { this.key = ključ; this.value = vrednost; }
/** * Ustvari vnos, ki predstavlja isto preslikavo kot * določen vnos. * * @param vnos vnos za kopiranje */ public SimpleImmutableEntry(Entry<? razširi K, ? razširi V> vnos) { this.key = entry.getKey(); this.value = entry.getValue(); }
/** * vrne ključ, ki ustreza temu vnosu. * * @return ključ, ki ustreza temu vnosu */ public K getKey() { tipka za povratek; }
/** * Vrne vrednost, ki ustreza temu elementu. * * @return vrednost, ki ustreza temu vnosu */ public V getValue() { donosna vrednost; }
/** * Nadomesti vrednost, ki ustreza temu elementu, z navedeno * vrednost (neobvezna operacija). Ta implementacija preprosto zavrže * <tt>UnsupportedOperationException</tt>, kot ta razred implementira * <i>nespremenljiv</i> vnos na zemljevidu. * * @param vrednost nove vrednosti, ki se shranjuje v tem vnosu * @return (Ne vrne se) * @throws UnsupportedOperationException vedno */ public V setValue(V vrednost) { throw new UnsupportedOperationException(); }
/** * Primerja določen objekt s tem vnosom za enakost. * vrne {@coderes} če je dani objekt tudi vnos na preslikavi in * oba vnosa predstavljata isto preslikavo. Bolj formalno, dva * vnosi {@code e1} in {@code e2} predstavljata isto preslikavo *če<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 zagotavlja, da metoda {@code enako} pravilno deluje preko * različne implementacije vmesnika {@code Map.Entry}. * * @param o objekt, ki ga je treba primerjati za enakost s tem vnosom na zemljevidu * @return {@code res}, če je določen objekt enak tej preslikavi *vnos * @see #hashCode */ javni boolean je enak(Objekt o) { če (!( o instanceof Map.Entry)) return false; Map.Entry<?,?> e = (Map.Entry<?,?>)o; return eq(key, e.getKey()) & eq(value, e.getValue()); }
/** * Vrne vrednost hash kode za ta vnos na preslikavi. Zgoščevalna koda * elementa preslikave {@code e} je definiran kot: <pre> * (e.getKey()==null ? 0 : e.getKey().hashCode()) ^ * (e.getValue()==null ? 0 : e.getValue().hashCode())</pre> * To zagotavlja, da {@code e1.enako(e2)} implicira, da * {@code e1.hashCode()==e2.hashCode()} za poljubna dva vnosa * {@code e1} in {@code e2}, kot zahteva splošni * pogodba {@linkObject#hashCode}. * * @return vrednost hash kode za ta vnos na preslikavi * @see #equals */ public int hashCode() { return (key == null ? 0 : key.hashCode()) ^ (value == null ? 0 : value.hashCode()); }
/** * Vrne nizovno predstavitev tega vnosa na zemljevidu. Ta * implementacija vrne nizno predstavitev tega * ključ vnosa, ki mu sledi znak enak ("<tt>=</tt>") * sledi niz, ki predstavlja vrednost tega vnosa. * * @return String predstavitev tega vnosa na zemljevidu */ public String toString() { return key + "=" + vrednost; }
} SimpleImmutableEntry zavrže java.lang, če poskuša spremeniti vrednost, in pokliče metodo setValue.NepodprtaOperacijaIzjemaNenormalno.
Koda:
|