Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 22637|Ответ: 1

[Источник] Java java.util.AbstractMap.SimpleImmutableEntry для подробностей

[Скопировать ссылку]
Опубликовано 2021-11-10 17:39:42 | | | |
Пара, или пара, обеспечивает удобный способ обработки простых связей ключ-значение, что особенно полезно, когда мы хотим вернуть два значения из метода. JDK поставляется с внутренними классами: AbstractMap.SimpleEntry и AbstractMap.SimpleImmutableEntry

Использование кортежей на Яве

https://www.itsvse.com/thread-10055-1-1.html

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Ненормальный.



Код:







Предыдущий:Java изменяет конфигурационный файл пакета war
Следующий:Развернуть сервис Elasticsearch с помощью Docker
Опубликовано 2021-11-11 08:48:42 |
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com