Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 22637|Antwoord: 1

[Bron] Java java.util.AbstractMap.SimpleImmutableEntry voor details

[Link kopiëren]
Geplaatst op 2021-11-10 17:39:42 | | | |
Pair, of pair, biedt een handige manier om eenvoudige sleutel-waarde-associaties te verwerken, wat vooral nuttig is wanneer we twee waarden uit een methode willen teruggeven. De JDK wordt geleverd met interne klassen: AbstractMap.SimpleEntry en AbstractMap.SimpleImmutableEntry

Het gebruik van tupels in Java

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

1. SimpleEntry is gedefinieerd in de abstracte klasse AbstractMap, en de constructiemethode lijkt op die van Pair.

2. De AbstractMap-klasse bevat ook een geneste klasse, die een onveranderlijk paar vertegenwoordigt: de SimpleImmutableEntry-klasse.

/**
     * Een Entry die een onveranderlijke sleutel en waarde behoudt.  Deze klasse
     * ondersteunt methode <tt>setValue</tt> niet.  Deze klasse kan zijn
     * handig in methoden die thread-veilige snapshots van
     * sleutelwaarde-mappingen.
     *
     * @since 1.6
     */
    publieke statische klasse SimpleImmutableEntry<K,V>
        implements Entry<K,V>, java.io.Serializable
    {
        privé statische definitieve lange serieVersieUID = 7138329143949025153L;

        privé eind-K-sleutel;
        private eindwaarde V;

        /**
         * Maakt een invoer aan die een mapping vertegenwoordigt vanuit de gespecificeerde
         * sleutel tot de opgegeven waarde.
         *
         * @param sleutel de sleutel die door deze vermelding wordt weergegeven
         * @param de waarde die door deze vermelding wordt weergegeven waardeerd
         */
        publiek SimpleImmutableEntry(K key, V value) {
            this.key = sleutel;
            this.value = value;
        }

        /**
         * Maakt een entry aan die dezelfde mapping vertegenwoordigt als de
         * gespecificeerde invoer.
         *
         * @param invoer de invoer om te kopiëren
         */
        publieke SimpleImmutableEntry(Entry<? extends K, ? extends V> entry) {
            this.key = entry.getKey();
            this.value = entry.getValue();
        }

        /**
         * Geeft de sleutel terug die bij deze invoer hoort.
         *
         * @return de sleutel die bij deze invoer hoort
         */
        public K getKey() {
            retoursleutel;
        }

        /**
         * Geeft de waarde terug die bij deze vermelding hoort.
         *
         * @return de waarde die overeenkomt met deze invoer
         */
        public V getValue() {
            retourwaarde;
        }

        /**
         * Vervangt de waarde die overeenkomt met deze invoer door de gespecificeerde
         * waarde (optionele bewerking).  Deze implementatie gooit simpelweg
         * <tt>UnsupportedOperationException</tt>, zoals deze klasse implementeert
         * een <i>onveranderlijke</i> kaartinvoer.
         *
         * @param waarde nieuwe waarde die in deze vermelding wordt opgeslagen
         * @return (Komt niet terug)
         * @throws UnsupportedOperationException altijd
         */
        publieke V setWaarde(V-waarde) {
            gooi nieuwe UnsupportedOperationException();
        }

        /**
         * Vergelijkt het gespecificeerde object met deze invoer voor gelijkheid.
         * Retourneert {@codewaar} als het gegeven object ook een afbeeldingsinvoer is en
         * de twee vermeldingen vertegenwoordigen dezelfde mapping.  Meer formele, twee
         * elementen {@code e1} en {@code e2} vertegenwoordigen dezelfde afbeelding
         *als<pre>
         * (e1.getKey()==null ?
         * e2.getKey()==null :
         * e1.getKey().gelijk aan (e2.getKey()))
         *   &&
         * (e1.getValue()==null ?
         * e2.getValue()==null :
         * e1.getValue().equals(e2.getValue()))</pre>
         * Dit zorgt ervoor dat de {@code gelijk}-methode correct werkt over
         * verschillende implementaties van de {@code Map.Entry}-interface.
         *
         * @param o object dat vergeleken moet worden voor gelijkheid met deze afbeeldingsinvoer
         * @return {@code waar} als het gespecificeerde object gelijk is aan deze afbeelding
         *ingang
         * @see #hashCode
         */
        publieke booleaanse equals(Object o) {
            als (!( o instantie van Map.Entry))
                return false;
            Kaart.Invoer<?,?> e = (Kaart.Invoer<?,?>)o;
            return eq(key, e.getKey()) && eq(value, e.getValue());
        }

        /**
         * Geeft de hashcodewaarde terug voor deze map-invoer.  De hashcode
         * van een afbeeldingsinvoer {@code e} wordt gedefinieerd als: <pre>
         * (e.getKey()==null ? 0 : e.getKey().hashCode()) ^
         * (e.getValue()==null ? 0 : e.getValue().hashCode())</pre>
         * Dit zorgt ervoor dat {@code e1.gelijk aan (e2)} impliceert dat
         * {@code e1.hashCode()==e2.hashCode()} voor twee willekeurige Entries
         * {@code e1} en {@code e2}, zoals vereist door de generaal
         * contract van {@linkObject#hashCode}.
         *
         * @return de hashcodewaarde voor deze kaartvermelding
         * @see #equals
         */
        publieke int hashCode() {
            return (key == null ? 0 : key.hashCode()) ^
                   (waarde == null ? 0 : waarde.hashCode());
        }

        /**
         * Geeft een stringrepresentatie van deze kaartinvoer terug.  Dit
         * implementatie geeft de stringrepresentatie hiervan terug
         * Invoersleutel gevolgd door het gelijke teken ("<tt>=</tt>")
         * gevolgd door de stringrepresentatie van de waarde van deze invoer.
         *
         * @return een stringrepresentatie van deze kaartvermelding
         */
        publieke String toString() {
            return key + "=" + waarde;
        }

    }

SimpleImmutableEntry gooit java.lang als het probeert de waarde te wijzigen, waarbij de setValue-methode wordt aangeroepen.UnsupportedOperationExceptionAbnormaal.



Code:







Vorig:Java wijzigt het configuratiebestand van het war-pakket
Volgend:Rol de Elasticsearch-dienst uit met Docker
Geplaatst op 11-11-2021 08:48:42 |
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com