Paar või paar pakub mugavat viisi lihtsate võtme-väärtuste seoste käsitlemiseks, mis on eriti kasulik, kui soovime tagastada kaks väärtust meetodist. JDK-l on sisemised klassid: AbstractMap.SimpleEntry ja AbstractMap.SimpleImmutableEntry
1. SimpleEntry on defineeritud abstraktses klassis AbstractMap ning selle ehitusmeetod on sarnane Pair omaga.
2. AbstractMap klass sisaldab ka pesastatud klassi, mis esindab muutumatut paari: SimpleImmutableEntry klassi.
/** * Kirje, mis hoiab muutumatut võtit ja väärtust. See klass * ei toeta meetodit <tt>setValue</tt>. See klass võib olla * mugav meetodites, mis tagastavad lõimekindlaid hetktõmmisi * võtme-väärtuse kaardistused. * * @since 1.6 */ public static klass SimpleImmutableEntry<K,V> implements Entry<K,V>, java.io.Serializable { privaatne staatiline lõplik pikk seriaalversioon UID = 7138329143949025153L;
privaatne lõplik K võti; privaatne lõplik V väärtus;
/** * Loob kirje, mis esindab määratud kaardistust * võti määratud väärtusele. * * @param selle kirje poolt tähistatud võti * @param väärtus, mida see kirje esindab */ public SimpleImmutableEntry(K key, V value) { this.key = võti; this.value = väärtus; }
/** * Loob kirje, mis esindab sama kaardistust nagu * täpsustatud kirje. * * @param sisesta sissekanne kopeerimiseks */ public SimpleImmutableEntry(Entry<? pikendab K, ? pikendab V> entry) { this.key = entry.getKey(); this.value = entry.getValue(); }
/** * Tagastab selle kirje võtme. * * @return sellele kirjele vastav võti */ public K getKey() { tagastusvõti; }
/** * Tagastab sellele kirjele vastava väärtuse. * * @return sellele kirjele vastav väärtus */ public V getValue() { tagastusväärtus; }
/** * Asendab sellele kirjele vastava väärtuse määratud väärtusega * väärtus (valikuline operatsioon). See rakendus lihtsalt viskab * <tt>UnsupportedOperationException</tt>, nagu see klass rakendab * <i>muutumatu</i> kaardikirje. * * @param väärtus uus väärtus, mis salvestatakse sellesse kirjesse * @return (Ei naase) * @throws UnsupportedOperationException alati */ public V setValue(V value) { viska uus UnsupportedOperationException(); }
/** * Võrdleb määratud objekti selle kirjega võrdsuse osas. * Tagastab {@codetrue}, kui antud objekt on ka kaardi kirje ja * need kaks kirjet esindavad sama kaardistust. Formaalsemalt öeldes kaks * kirjed {@code e1} ja {@code e2} tähistavad sama kaardistust *kui<pre> * (e1.getKey()==null ? * e2.getKey()==null : * e1.getKey().equals(e2.getKey())) * && * (e1.getValue()==null ? * e2.getValue()==null : * e1.getValue().equals(e2.getValue()))</pre> * See tagab, et {@code võrdub} meetod töötab korrektselt üle kogu * {@code Map.Entry} liidese erinevad rakendused. * * @param o objekti, mida võrreldakse võrdsuse osas selle kaardikirjega * @return {@code true}, kui määratud objekt on võrdne selle kaardistusega *Kanne * @see #hashCode */ public boolean võrdub(Objekt o) { kui (!( o instanceof Map.Entry)) tagasta vale; Map.Entry<?,?> e = (Map.Entry<?,?>)o; return eq(key, e.getKey()) && eq(value, e.getValue()); }
/** * Tagastab selle kaardikirje räsikoodi väärtuse. Räsikood * kaardikirje {@code e} defineeritud kujul: <pre> * (e.getKey()==null ? 0 : e.getKey().hashCode()) ^ * (e.getValue()==null ? 0 : e.getValue().hashCode())</pre> * See tagab, et {@code e1.equals(e2)} tähendab, et * {@code e1.hashCode()==e2.hashCode()} mis tahes kahe kirje jaoks * {@code e1} ja {@code e2}, nagu nõuab üldine * leping {@linkObject#hashCode}. * * @return selle kaardikirje räsikoodi väärtus * @see #equals */ public int hashCode() { return (key == null ? 0 : key.hashCode()) ^ (value == null ? 0 : value.hashCode()); }
/** * Tagastab selle kaardi kirje stringikujutuse. See * teostus tagastab selle stringi esituse * sisenemise võti, millele järgneb võrdne märk ("<tt>=</tt>") * millele järgneb selle kirje väärtuse stringi esitus. * * @return selle kaardi kirje stringi esitust */ public String toString() { tagastamisvõti + "=" + väärtus; }
} SimpleImmutableEntry kasutab java.lang'i, kui ta üritab väärtust muuta, kutsudes setValue meetodit.ToetamataOperationExceptionEbanormaalne.
Kood:
|