ペア、またはペアは、単純なキー-値の関連付けを扱う便利な方法を提供し、特にメソッドから2つの値を返したい場合に便利です。 JDKには内部クラス:AbstractMap.SimpleEntryおよびAbstractMap.SimpleImmutableEntryがあります
1. SimpleEntryは抽象クラスAbstractMapで定義されており、その構成方法はPairのものに似ています。
2. AbstractMapクラスには、不変のペアを表す入れ子クラス、SimpleImmutableEntryクラスも含まれます。
/** * 不変の鍵と値を維持するエントリ。 このクラス * はメソッド<tt>setValue</tt>をサポートしていません。 このクラスは次のようになるかもしれません * スレッドセーフスナップショットを返すメソッドで便利です * キー・バリュー・マッピング。 * * @since 1.6 */ public static class SimpleImmutableEntry<K,V> implements Entry<K,V>、java.io.Serializable { private静的final長serialVersionUID = 7138329143949025153L;
プライベート最終Kキー; プライベート最終V値;
/** * 指定されたからマッピングを表すエントリを作成する * 指定された値の鍵です。 * * @param この項目で表されるキー * @paramこの項目で表される値の価値を */ public SimpleImmutableEntry(K key, V value) { this.key = キー; this.value = value; }
/** * と同じ写像を表すエントリを作成します * 指定エントリー。 * * @param 入力 コピー */ public SimpleImmutableEntry(Entry<? extends K, ? extends V> entry) { this.key = entry.getKey(); this.value = entry.getValue(); }
/** * このエントリに対応する鍵を返します。 * * @return この項目に対応するキー */ public K getKey() { リターンキー; }
/** * このエントリに対応する値を返します。 * * @return この項目に対応する値 */ public V getValue() { リターンバリュー; }
/** * このエントリに対応する値を指定された に置き換えます * 値(任意操作)。 この実装は単に投げ捨てるだけです。 * このクラスが実装する<tt>UnsupportedOperationException</tt> * <i>不変の</i>地図エントリー。 * * @param このエントリに新しい値を保存する * @return(戻らない) * @throws UnsupportedOperationException は常に */ public V setValue(V value) { throw new UnsupportedOperationException(); }
/** * 指定された対象をこの項目と等式のために比較する。 * リターン {@codetrue} 与えられた対象が同時に写像のエントリであり、 * 2つの項目は同じ写像を表します。 より正式には、2 * {@code e1} と {@code e2} は同じ写像を表します *もし<pre> * (e1.getKey()==null ? * e2.getKey()==null : * e1.getKey().equals(e2.getKey()) * && * (e1.getValue()==null ? * e2.getValue()==null : * e1.getValue().equals(e2.getValue()))</pre> * これにより{@code equals}法が正しく機能します * {@code Map.Entry} インターフェースの異なる実装。 * * @param o オブジェクトはこの地図エントリと等価性を比較する対象です * @return {@code true} 指定された対象がこの写像に等しい場合 *エントリ * @see #hashCode */ public boolean equals(Object o) { もし(!( o instanceof Map.Entry)) Return false; Map.Entry<?,?> e = (Map.Entry<?,?>)o; 返す eq(key, e.getKey()) && eq(value, e.getValue()); }
/** * このマップエントリのハッシュコード値を返します。 ハッシュコード * は、写像のエントリ {@code e} は次のように定義されます: <pre> * (e.getKey()==null ? 0 : e.getKey().hashCode()) ^ * (e.getValue()==null ? 0 : e.getValue().hashCode())</pre> * これにより{@code e1.equals(e2)}が次のことを意味します * {@code e1.hashCode()==e2.hashCode()} 任意の2つのエントリに対して * {@code e1} および {n@code e2}、一般の要求に従い * { の契約@linkオブジェクト#hashCode}。 * * @return このマップエントリのハッシュコード値 * @see #equals */ public int hashCode() { return (key == null ? 0 : key.hashCode()) ^ (value == null ? 0 : value.hashCode()); }
/** * このマップエントリの文字列表現を返します。 これ * 実装はこの文字列表現を返します * エントリのキーの後に等しい文字が続く ("<tt>=</tt>") * の後にこのエントリの値の文字列表現が続きます。 * * @return このマップの文字列表現 */ public String toString() { リターンキー + "=" + 値; }
} SimpleImmutableEntryは、setValueメソッドを呼び出して値を変更しようとするとjava.langをスローします。UnsupportedOperationException異常。
コード:
|