쌍 또는 쌍은 간단한 키-값 연관을 편리하게 처리하는 방법을 제공하며, 특히 메서드에서 두 값을 반환하고 싶을 때 유용합니다. 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 static final long 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 값) { throw new UnsupportedOperationException(); }
/** * 지정된 객체를 이 항목과 동일하게 비교합니다. * 반환 {@codetrue} 주어진 객체가 또한 사상 항목이고 * 두 항목은 동일한 매핑을 나타냅니다. 좀 더 공식적으로는 두 명입니다 * 항목 {@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 * @return {@code 참} 지정된 객체가 이 사상과 같을 때 *항목 * @see #hashCode */ public boolean equals(Object o) { 만약 (!( o instanceof Map.Entry)) return false; 맵.엔트리<?,?> e = (맵 엔트리<?,?>)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()} 임의의 두 엔트리에 대해 * {@code e1} 및 {@code e2}, 일반 명령에 따라 * {의 계약@link객체#hashCode}. * * 이 지도 항목의 해시 코드 값을 @return * @see #equals */ 공개 int hashCode() { return (키 == null ? 0 : key.hashCode()) ^ (value == null ? 0 : value.hashCode()); }
/** * 이 맵 항목의 문자열 표현을 반환합니다. 이 * 구현은 이 표현의 문자열 표현을 반환합니다 * 항목의 키 뒤에 같은 문자("<tt>=</tt>")가 붙는다. * 뒤에 이 항목의 값을 문자열로 표현합니다. * * @return 이 지도 항목의 문자열 표현 */ public String toString() { 반환 키 + "=" + 값; }
} SimpleImmutableEntry는 setValue 메서드를 호출하여 값을 수정하려 하면 java.lang을 던집니다.지원되지 않는 운영 예외비정상적인.
코드:
|