Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 22637|Відповідь: 1

[Джерело] Java java.util.AbstractMap.SimpleImmutableEntry для деталей

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

Використання кортежів у Java

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<? extends K, ? extend V> entry) {
            this.key = entry.getKey();
            this.value = entry.getValue();
        }

        /**
         * Повертає ключ, що відповідає цьому елементу.
         *
         * @return тональність, що відповідає цьому запису
         */
        public 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 equals} працює коректно поперек
         * різні реалізації інтерфейсу {@code Map.Entry}.
         *
         * @param o об'єкт для порівняння для рівності з цим елементом відображення
         * @return {@code істинно}, якщо заданий об'єкт дорівнює цьому відображенню
         *вхід
         * @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()) ^
                   (value == null ? 0 : value.hashCode());
        }

        /**
         * Повертає рядкове представлення цього запису карти.  Цей
         * реалізація повертає рядкове представлення цього
         * ключ запису, за яким слідує символ рівності ("<tt>=</tt>")
         * після чого слідує рядкове представлення значення цього запису.
         *
         * @return рядкове представлення цього запису карти
         */
        public String toString() {
            return key + "=" + значення;
        }

    }

SimpleImmutableEntry викидає java.lang, якщо намагається змінити значення, викликаючи метод setValue.UnsupportedOperationExceptionНенормальні.



Код:







Попередній:Java змінює конфігураційний файл пакету war
Наступний:Розгорнути сервіс Elasticsearch за допомогою Docker
Опубліковано 2021-11-11 08:48:42 |
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com