Pāris vai pāris nodrošina ērtu veidu, kā apstrādāt vienkāršas atslēgas un vērtības asociācijas, kas ir īpaši noderīgi, ja mēs vēlamies atgriezt divas vērtības no metodes. JDK nāk ar iekšējām klasēm: AbstractMap.SimpleEntry un AbstractMap.SimpleImmutableEntry
1. SimpleEntry ir definēts abstraktā klasē AbstractMap, un tā uzbūves metode ir līdzīga Pair.
2. AbstractMap klasē ir arī ligzdota klase, kas apzīmē nemainīgu pāri: klase SimpleImmutableEntry.
/** * Ieraksts, kas saglabā nemainīgu atslēgu un vērtību. Šī klase * neatbalsta metodi <tt>setValue</tt>. Šī klase var būt * ērts metodēs, kas atgriež pavedieniem drošus momentuzņēmumus * atslēgas-vērtības kartējumi. * * @since 1,6 */ publiskā statiskā klase SimpleImmutableEntry<K,V> īsteno Entry<K,V>, java.io.Serializable { privāts statisks galīgais garais serialVersionUID = 7138329143949025153L;
privātā galīgā K atslēga; privātā galīgā V vērtība;
/** * Izveido ierakstu, kas attēlo kartējumu no norādītā * atslēga uz norādīto vērtību. * * @param atslēga atslēga, ko attēlo šis ieraksts * @param vērtība vērtība, ko atspoguļo šis ieraksts */ public SimpleImmutableEntry(K atslēga, V vērtība) { this.key = atslēga; this.value = vērtība; }
/** * Izveido ierakstu, kas attēlo to pašu kartējumu kā * Norādīts ieraksts. * * @param ieraksta kopiju */ public SimpleImmutableEntry(Entry<? paplašina K, ? paplašina V> ierakstu) { this.key = entry.getKey(); this.value = entry.getValue(); }
/** * Atgriež atslēgu, kas atbilst šim ierakstam. * * @return šim ierakstam atbilstošo atslēgu */ publiskais K getKey() { atgriešanās atslēga; }
/** * Atgriež vērtību, kas atbilst šim ierakstam. * * @return šim ierakstam atbilstošā vērtība */ publiskais V getValue() { atgriešanās vērtība; }
/** * Aizstāj šim ierakstam atbilstošo vērtību ar norādīto * Vērtība (izvēles darbība). Šī ieviešana vienkārši izmet * <tt>UnsupportedOperationException</tt>, kā šī klase īsteno * <i>nemainīgs</i> kartes ieraksts. * * @param vērtība jaunā vērtība, kas jāsaglabā šajā ierakstā * @return (neatgriežas) * @throws UnsupportedOperationException vienmēr */ publiskais V setValue(V vērtība) { izmest jaunu UnsupportedOperationException(); }
/** * Salīdzina norādīto objektu ar šo vienlīdzības ierakstu. * Atgriež {@codetrue}, ja dotais objekts ir arī kartes ieraksts, un * Abi ieraksti attēlo vienu un to pašu kartējumu. Formāli runājot, divi * ieraksti {@code e1} un {@code e2} apzīmē vienu un to pašu kartējumu *ja<pre> * (e1.getKey()==null ? * e2.getKey()== null : * e1.getKey().equals(e2.getKey())) * && * (e1.getValue()== null ? * e2.getValue()==null : * e1.getValue().equals(e2.getValue()))</pre> * Tas nodrošina, ka {@code equals} metode darbojas pareizi visās * dažādas {@code Map.Entry} saskarnes ieviešanas. * * @param objekts, kas jāsalīdzina vienlīdzībai ar šo kartes ierakstu * @return {@code true}, ja norādītais objekts ir vienāds ar šo karti *Ierakstu * @see #hashCode */ publiskais Būla vienāds(Objekts o) { ja (!( o Map.Entry instance)) atgriešanās nepatiesa; Map.Entry<?,?> e = (Map.Entry<?,?>)o; return eq(key, e.getKey()) && eq(value, e.getValue()); }
/** * Atgriež šī kartes ieraksta jaucējkoda vērtību. Jaucējkods * kartes ieraksta {@code e} ir definēts: <pre> * (e.getKey()==null ? 0 : e.getKey().hashCode()) ^ * (e.getValue()==null ? 0 : e.getValue().hashCode())</pre> * Tas nodrošina, ka {@code e1.equals(e2)} nozīmē, ka * {@code e1.hashCode()==e2.hashCode()} jebkuriem diviem ierakstiem * {@code e1} un {@code e2}, kā to prasa vispārīgie * līgums par {@linkObjekts#hashCode}. * * @return šī kartes ieraksta jaucējkoda vērtību * @see #equals */ public int hashCode() { return (atslēga == nulle ? 0 : key.hashCode()) ^ (vērtība == nulle ? 0 : vērtība.hashCode()); }
/** * Atgriež šī kartes ieraksta virknes attēlojumu. Šis * implementācija atgriež virknes attēlojumu * ieraksta atslēga, kam seko vienādības rakstzīme ("<tt>=</tt>") * kam seko šī ieraksta vērtības virknes attēlojums. * * @return šī kartes ieraksta virknes attēlojumu */ public String toString() { atgriešanās taustiņš + "=" + vērtība; }
} SimpleImmutableEntry izmet java.lang, ja tas mēģina modificēt vērtību, izsaucot setValue metodi.UnsupportedOperationExceptionPatoloģiska.
Kods:
|