Pari tai pari tarjoaa kätevän tavan käsitellä yksinkertaisia avain-arvo-assosiaatioita, mikä on erityisen hyödyllistä, kun haluamme palauttaa kaksi arvoa metodista. JDK:ssa on sisäisiä luokat: AbstractMap.SimpleEntry ja AbstractMap.SimpleImmutableEntry
1. SimpleEntry määritellään abstraktissa luokassa AbstractMap, ja sen rakentamismenetelmä on samankaltainen kuin Pairissa.
2. AbstractMap-luokka sisältää myös sisäkkäisen luokan, joka edustaa muuttumatonta paria: SimpleImmutableEntry-luokkaa.
/** * Merkintä, joka säilyttää muuttumattoman avaimen ja arvon. Tämä luokka * ei tue <tt>metodia setValue</tt>. Tämä luokka saattaa olla * kätevä menetelmissä, jotka palauttavat säiketurvallisia tilannekuvia * Avain-arvojen kartoitukset. * * @since 1.6 */ julkinen staattinen luokka SimpleImmutableEntry<K,V> toteuttaa Entry<K,V>, java.io.Serializable { yksityinen staattinen loppupitkä sarjaVersionUID = 7138329143949025153L;
yksityinen viimeinen K-avain; yksityinen lopullinen V-arvo;
/** * Luo merkinnän, joka edustaa määritellystä kartoituksesta * avain määriteltyyn arvoon. * * @param avain tässä merkinnässä * @param arvo tämän merkinnän edustama arvo */ public SimpleImmutableEntry(K key, V value) { this.key = sävellain; this.value = arvo; }
/** * Luo merkinnän, joka edustaa samaa kuvausta kuin * määritelty merkintä. * * @param merkintä kopioitavaksi */ public SimpleImmutableEntry(Entry<? laajentaa K:ta, ? laajentaa V> entryä) { this.key = entry.getKey(); this.value = entry.getValue(); }
/** * Palauttaa avaimen, joka vastaa tätä merkintää. * * @return avain, joka vastaa tätä merkintää */ public K getKey() { paluuavain; }
/** * Palauttaa arvon, joka vastaa tätä merkintää. * * @return arvo, joka vastaa tätä merkintää */ public V getValue() { palautusarvo; }
/** * Korvaa tämän merkinnän vastaavan arvon määritetyllä arvolla * arvo (valinnainen operaatio). Tämä toteutus heittää yksinkertaisesti * <tt>UnsupportedOperationException</tt>, kuten tämä luokka toteuttaa * <i>muuttumaton</i> karttamerkintä. * * @param arvo, joka tallennetaan tähän merkintään * @return (Ei palaa) * @throws UnsupportedOperationException aina */ public V setValue(V value) { heittää uuden UnsupportedOperationException(); }
/** * Vertaa määriteltyä objektia tähän merkintään tasa-arvon osalta. * Palautukset {@codetrue}, jos annettu objekti on myös kartta-alkio ja * Nämä kaksi alkiota edustavat samaa kuvausta. Muodollisemmin, kaksi * alkiot {@code e1} ja {@code e2} edustavat samaa kuvausta *jos<pre> * (e1.getKey()==null ? * e2.getKey()==null : * e1.getKey().equals(e2.getKey())) * && * (e1.getValue()==null ? * e2.getValue()==null : * e1.getValue().equals(e2.getValue()))</pre> * Tämä varmistaa, että {@code equals} -menetelmä toimii oikein eri puolilla * eri toteutuksia {@code Map.Entry} -rajapinnasta. * * @param o objekti, jota verrataan tasa-arvon vuoksi tämän karttamerkinnän kanssa * @return {@code true}, jos määritelty objekti on yhtä suuri kuin tämä kuvaus *merkintä * @see #hashCode */ public boolean equals(Object o) { jos (!( o instance of Map.Entry)) palauta väärin; Map.Entry<?,?> e = (Map.Entry<?,?>)o; return eq(key, e.getKey()) && eq(value, e.getValue()); }
/** * Palauttaa tämän karttamerkinnän hajautuskoodiarvon. Hajautuskoodi * karttamerkinnästä {@code e} määritellään seuraavasti: <pre> * (e.getKey()==null ? 0 : e.getKey().hashCode()) ^ * (e.getValue()==null ? 0 : e.getValue().hashCode())</pre> * Tämä varmistaa, että {@code e1.equals(e2)} tarkoittaa, että * {@code e1.hashCode()==e2.hashCode()} mille tahansa kahdelle Merkinnälle * {@code e1} ja {@code e2}, kuten yleinen * { sopimus@linkObject#hashCode}. * * @return tämän karttamerkinnän hajautuskoodiarvo * @see #equals */ public int hashCode() { return (key == null ? 0 : key.hashCode()) ^ (value == null ? 0 : value.hashCode()); }
/** * Palauttaa merkkijonon esityksen tästä karttamerkinnästä. Tämä * toteutus palauttaa tämän merkkijonon esityksen * sisäänpääsyn avain ja sen jälkeen yhtä suuri merkki ("<tt>=</tt>") * sen jälkeen tämän merkinnän arvon merkkijonoesitys. * * @return merkkijonoesitys tästä karttamerkinnästä */ public String toString() { return-avain + "=" + arvo; }
} SimpleImmutableEntry heittää java.lang-tiedoston, jos se yrittää muuttaa arvoa, kutsuen setValue-metodia.TukematonOperationExceptionEpänormaali.
Koodi:
|