Pora arba pora suteikia patogų būdą tvarkyti paprastas rakto ir reikšmės asociacijas, o tai ypač naudinga, kai norime grąžinti dvi metodo reikšmes. JDK ateina su vidinėmis klasėmis: AbstractMap.SimpleEntry ir AbstractMap.SimpleImmutableEntry
1. SimpleEntry apibrėžiamas abstrakčioje klasėje AbstractMap, o jo konstravimo metodas yra panašus į Pair.
2. AbstractMap klasėje taip pat yra įdėta klasė, kuri reiškia nekintančią porą: SimpleImmutableEntry klasė.
/** * Įrašas, išlaikantis nekintamą raktą ir vertę. Ši klasė * nepalaiko metodo <tt>setValue</tt>. Ši klasė gali būti * patogus metodai, kurie grąžina sriegio saugias momentines nuotraukas * rakto ir reikšmės susiejimai. * * @since 1,6 */ viešoji statinė klasė SimpleImmutableEntry<K,V> įgyvendina Entry<K,V>, java.io.Serializable { privatus statinis galutinis ilgas serialVersionUID = 7138329143949025153L;
privatus galutinis K raktas; privati galutinė V vertė;
/** * Sukuria įrašą, vaizduojantį susiejimą iš nurodyto * klavišą į nurodytą vertę. * * @param raktas pavaizduotas šiame įraše * @param vertė šiame įraše nurodyta vertė */ public SimpleImmutableEntry(K raktas, V reikšmė) { this.key = raktas; this.value = vertė; }
/** * Sukuria įrašą, vaizduojantį tą patį susiejimą kaip * nurodytas įrašas. * * @param įrašas įrašas kopijuoti */ public SimpleImmutableEntry(Entry<? išplečia K, ? išplečia V> įrašą) { this.key = entry.getKey(); this.value = entry.getValue(); }
/** * Grąžina šį įrašą atitinkantį raktą. * * @return šį įrašą atitinkantį raktą */ viešas K getKey() { grįžimo raktas; }
/** * Grąžina reikšmę, atitinkančią šį įrašą. * * @return vertę, atitinkančią šį įrašą */ viešas V getValue() { grąžinamoji vertė; }
/** * Šį įrašą atitinkančią reikšmę pakeičia nurodyta * reikšmė (pasirenkama operacija). Šis įgyvendinimas tiesiog išmeta * <tt>UnsupportedOperationException</tt>, kaip ši klasė įgyvendina * <i>nekintamas</i> žemėlapio įrašas. * * @param reikšmė nauja reikšmė, kuri turi būti išsaugota šiame įraše * @return (negrįžta) * @throws UnsupportedOperationException visada */ viešasis V setValue(V reikšmė) { mesti naują UnsupportedOperationException(); }
/** * Palygina nurodytą objektą su šiuo lygybės įrašu. * Grąžina {@codetrue}, jei nurodytas objektas taip pat yra žemėlapio įrašas ir * Du įrašai atspindi tą patį susiejimą. Formaliau, du * Įrašai {@code e1} ir {@code e2} reiškia tą patį susiejimą *jeigu<pre> * (e1.getKey()==null ? * e2.getKey()==null : * e1.getKey().equals(e2.getKey())) * && * (e1.getValue()==null ? * e2.getValue()==null : * e1.getValue().equals(e2.getValue()))</pre> * Tai užtikrina, kad {@code lygus} metodas tinkamai veiktų visose * skirtingi {@code Map.Entry} sąsajos įgyvendinimai. * * @param objektas, kuris turi būti lyginamas dėl lygybės su šiuo žemėlapio įrašu * @return {@code true}, jei nurodytas objektas yra lygus šiai schemai *Įrašas * @see #hashCode */ viešasis loginis lygus(Objektas o) { jei (!( o Map.Entry pavyzdys)) grąžinti klaidingą; Map.Entry<?,?> e = (Map.Entry<?,?>)o; return eq(key, e.getKey()) && eq(value, e.getValue()); }
/** * Grąžina šio žemėlapio įrašo maišos kodo reikšmę. Maišos kodas * žemėlapio įrašo {@code e} apibrėžiamas taip: <pre> * (e.getKey()==null ? 0 : e.getKey().hashCode()) ^ * (e.getValue()==null ? 0 : e.getValue().hashCode())</pre> * Tai užtikrina, kad {@code e1.equals(e2)} reiškia, kad * {@code e1.hashCode()==e2.hashCode()} bet kuriems dviem įrašams * {@code e1} ir {@code e2}, kaip reikalaujama bendrajame * sutartis {@linkObjektas#hashCode}. * * @return šio žemėlapio įrašo maišos kodo reikšmę * @see #equals */ public int hashCode() { return (raktas == null ? 0 : key.hashCode()) ^ (reikšmė == nulis ? 0 : value.hashCode()); }
/** * Grąžina šio žemėlapio įrašo eilutės vaizdą. Šis * įgyvendinimas grąžina šios eilutės atvaizdą * įrašo raktas, po kurio seka lygybės simbolis ("<tt>=</tt>") * po to šio įrašo reikšmės eilutės vaizdas. * * @return šio žemėlapio įrašo eilutės reprezentacija */ public String toString() { grąžinimo raktas + "=" + reikšmė; }
} SimpleImmutableEntry išmeta java.lang, jei bando modifikuoti reikšmę, iškviesdamas setValue metodą.UnsupportedOperationExceptionNenormalus.
Kodas:
|