Par, eller par, ger ett bekvämt sätt att hantera enkla nyckel-värde-associationer, vilket är särskilt användbart när vi vill returnera två värden från en metod. JDK levereras med interna klasser: AbstractMap.SimpleEntry och AbstractMap.SimpleImmutableEntry
1. SimpleEntry definieras i den abstrakta klassen AbstractMap, och dess konstruktionsmetod liknar Pair.
2. AbstractMap-klassen innehåller också en nästlad klass, som representerar ett oföränderligt par: SimpleImmutableEntry-klassen.
/** * En post som upprätthåller en oföränderlig nyckel och värde. Den här klassen * stöder inte metoden <tt>setValue</tt>. Denna klass kan vara * bekvämt i metoder som returnerar trådsäkra snapshots av * nyckelvärdemappningar. * * @since 1.6 */ offentlig statisk klass SimpleImmutableEntry<K,V> implements Entry<K,V>, java.io.Serializable { privat statisk slutlig lång serieVersionUID = 7138329143949025153L;
privat slutnyckel K; privat slutvärde V;
/** * Skapar en post som representerar en mappning från den angivna * nyckel till det angivna värdet. * * @param nyckeln som representeras av denna post * @param värdera värdet som representeras av denna post */ public SimpleImmutableEntry(K-nyckel, V-värde) { this.key = nyckel; this.value = value; }
/** * Skapar en post som representerar samma avbildning som * specificerad inträde. * * @param ange anteckningen för att kopiera */ public SimpleImmutableEntry(Entry<? utvidgar K, ? utvidgar V> entry) { this.key = entry.getKey(); this.value = entry.getValue(); }
/** * Returnerar nyckeln som motsvarar denna post. * * @return nyckeln som motsvarar denna post */ public K getKey() { return-nyckel; }
/** * Returnerar värdet som motsvarar denna post. * * @return värdet motsvarande denna post */ public V getValue() { avkastningsvärde; }
/** * Ersätter värdet som motsvarar denna post med den angivna * värde (valfri operation). Denna implementation kastar helt enkelt * <tt>UnsupportedOperationException</tt>, som denna klass implementerar * en <i>oföränderlig</i> kartpost. * * @param värde nytt värde som ska lagras i denna post * @return (Återkommer inte) * @throws UnsupportedOperationException alltid */ public V setValue(V-värde) { kasta ny UnsupportedOperationException(); }
/** * Jämför det specificerade objektet med denna post för likhet. * Returnerar {@codesant} om det givna objektet också är en kartpost och * de två posterna representerar samma avbildning. Mer formellt, två * poster {@code e1} och {@code e2} representerar samma avbildning *om<pre> * (e1.getKey()==null ? * e2.getKey()==null : * e1.getKey().equals(e2.getKey())) * && * (e1.getValue()==null ? * e2.getValue()==null : * e1.getValue().equals(e2.getValue()))</pre> * Detta säkerställer att {@code är lika med }-metoden fungerar korrekt över * olika implementationer av {@code Map.Entry}-gränssnittet. * * @param o-objekt som ska jämföras för likhet med denna avbildningspost * @return {@code sann} om det specificerade objektet är lika med denna avbildning *inträde * @see #hashCode */ publik boolean equals(Objekt o) { om (!( o instans av Map.Entry)) returnera falsk; Map.Entry<?,?> e = (Map.Entry<?,?>)o; return eq(key, e.getKey()) && eq(value, e.getValue()); }
/** * Returnerar hashkodvärdet för denna kartpost. Hashkoden * av en avbildningspost {@code e} definieras som: <pre> * (e.getKey()==null ? 0 : e.getKey().hashCode()) ^ * (e.getValue()==null ? 0 : e.getValue().hashCode())</pre> * Detta säkerställer att {@code e1.likes(e2)} innebär att * {@code e1.hashCode()==e2.hashCode()} för två poster * {@code e1} och {@code e2}, enligt generalens krav * kontrakt av {@linkObject#hashCode}. * * @return hashkodvärdet för denna kartpost * @see #equals */ public int hashCode() { return (key == null ? 0 : key.hashCode()) ^ (värde == null ? 0 : värde.hashKod()); }
/** * Returnerar en strängrepresentation av denna kartpost. Denna * implementation returnerar strängrepresentationen av detta * Ingångens nyckel följt av tecken lika med ("<tt>=</tt>") * följt av strängrepresentationen av denna posts värde. * * @return en strängrepresentation av denna kartpost */ publik String toString() { returnera nyckel + "=" + värde; }
} SimpleImmutableEntry kastar java.lang om den försöker ändra värdet, och anropar setValue-metoden.UnsupportedOperationExceptionAbnorm.
Kod:
|