Пара, или пара, обеспечивает удобный способ обработки простых связей ключ-значение, что особенно полезно, когда мы хотим вернуть два значения из метода. JDK поставляется с внутренними классами: AbstractMap.SimpleEntry и AbstractMap.SimpleImmutableEntry
1. SimpleEntry определяется в абстрактном классе AbstractMap, а его метод построения схож с методом Pair.
2. Класс AbstractMap также содержит вложенный класс, который представляет собой неизменяемую пару: класс SimpleImmutableEntry.
/** * Запись, сохраняющая неизменный ключ и значение. Этот класс * не поддерживает метод <tt>setValue</tt>. Этот класс может быть * удобно в методах, которые возвращают безопасные для потока снимки * отображение ключей и значений. * * @since 1.6 */ публичный статический класс SimpleImmutableEntry<K,V> реализует Entry<K,V>, java.io.Serializable { приватный статический финальный длинный сериалVersionUID = 7138329143949025153L;
приватная финальная тональность K; частная конечная V-величина;
/** * Создаёт запись, представляющую отображение из указанного * ключ к указанному значению. * * @param тональность, представленная в этой записи * @param значение значения, представленное этой записью */ public SimpleImmutableEntry(ключ K, значение V) { this.key = ключ; this.value = значение; }
/** * Создаёт запись, представляющую то же отображение, что и * указанная запись. * * @param запись для копирования */ public SimpleImmutableEntry(Entry<? расширяет K, ? расширяет V> entry) { this.key = entry.getKey(); this.value = entry.getValue(); }
/** * Возвращает ключ, соответствующий этой записи. * * @return тональность, соответствующая этой записи */ публичный K getKey() { клавиша Return; }
/** * Возвращает значение, соответствующее этой записи. * * @return значение, соответствующее этой записи */ public V getValue() { возвратное значение; }
/** * Заменяет значение, соответствующее этой записи, на указанное * значение (необязательная операция). Эта реализация просто выбрасывает <tt>* UnsupportedOperationException</tt>, как реализует этот класс * <i>неизменная</i> запись карты. * * @param значение нового значения, которое должно храниться в этой записи * @return (Не возвращается) * @throws UnsupportedOperationException всегда */ public V setValue(V value) { выбросить новое 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 равно} работает корректно * различные реализации интерфейса {@code Map.Entry}. * * @param o объект для сравнения для равенства с этой записью отображения * @return {@code true}, если указанный объект равен этому отображению *вход * @see #hashCode */ публичные булевые равности(Объект o) { если (!( o экземпляр Map.Entry)) возврат ложным; Map.Entry<?,?> e = (Map.Entry<?,?>)o; return 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Объект#хэшКод}. * * @return значение хеш-кода для этой записи карты * @see #equals */ public int hashCode() { return (key == null ? 0 : key.hashCode()) ^ (значение == null ? 0 : value.hashCode()); }
/** * Возвращает строковое представление этой записи карты. Этот * реализация возвращает строковое представление этого * ключ для записи, за которым следует символ равенства ("<tt>=</tt>") * за которым следует строковое представление значения этого элемента. * * @return строковое представление этой записи карты */ public String toString() { возвратный ключ + "=" + значение; }
} SimpleImmutableEntry выдает java.lang, если пытается изменить значение, вызывая метод setValue.UnsupportedOperationExceptionНенормальный.
Код:
|