Paren gebruiken in Java

1. Overzicht

In dit korte artikel bespreken we het zeer nuttige programmeerconcept dat bekend staat als een Paar. Paren bieden een gemakkelijke manier om eenvoudige sleutel-tot-waardeassociaties af te handelen en zijn met name handig als we twee waarden van een methode willen retourneren.

Een eenvoudige implementatie van een Paar is beschikbaar in de kern Java-bibliotheken. Daarnaast hebben bepaalde bibliotheken van derden, zoals Apache Commons en Vavr, deze functionaliteit in hun respectievelijke API's blootgelegd.

2. Core Java-implementatie

2.1. De Paar Klasse

De Paar klasse is te vinden in de javafx.util pakket. De constructor van deze klasse heeft twee argumenten, een sleutel en de bijbehorende waarde:

Paar paar = nieuw paar (1, "Een"); Geheel getal sleutel = pair.getKey (); Tekenreekswaarde = pair.getValue (); 

Dit voorbeeld illustreert een eenvoudig Geheel getal naar Draad mapping met behulp van het Pair-concept.

Zoals weergegeven, is de sleutel in het paar- object wordt opgehaald door een getKey () methode terwijl de waarde wordt opgehaald door aan te roepen getValue ().

2.2. AbstractMap.SimpleEntry en AbstractMap.SimpleImmutableEntry

SimpleEntry wordt gedefinieerd als een geneste klasse binnen de Abstracte kaart klasse. Om een ​​object van dit type te maken, kunnen we een sleutel en waarde aan de constructor geven:

AbstractMap.SimpleEntry entry = nieuwe AbstractMap.SimpleEntry (1, "één"); Geheel getal sleutel = entry.getKey (); Tekenreekswaarde = entry.getValue ();

De sleutel en waarde zijn toegankelijk via standaard getter- en setter-methoden.

Bovendien is het Abstracte kaart class bevat ook een geneste klasse die een onveranderlijk paar vertegenwoordigt: de SimpleImmutableEntry klasse:

AbstractMap.SimpleImmutableEntry entry = nieuw AbstractMap.SimpleImmutableEntry (1, "één");

Dit werkt op dezelfde manier als de veranderlijke paarklasse, behalve dat de waarde van het paar niet kan worden gewijzigd. Als u dit probeert, krijgt u een UnsupportedOperationException.

3. Apache Commons

In de Apache Commons-bibliotheek kunnen we de Paar klasse in de org.apache.commons.lang3.tuple pakket. Dit is een abstracte klasse, dus het kan niet rechtstreeks worden geïnstantieerd.

We kunnen hier twee subklassen vinden - die onveranderlijke en veranderlijke paren vertegenwoordigen: ImmutablePair en MutablePair.

Beide implementaties hebben toegang tot key / value getter / setter-methoden:

ImmutablePair-paar = nieuw ImmutablePair (2; "Twee"); Geheel getal sleutel = pair.getKey (); Tekenreekswaarde = pair.getValue ();

Niet verwonderlijk, een poging om een ​​beroep te doen setValue () op de Onveranderlijk paar resulteert in een UnsupportedOperationException.

Maar de operatie is volledig geldig voor een veranderlijke implementatie:

Paar paar = nieuw MutablePair (3, "Drie"); pair.setValue ("New Three"); 

4. Vavr

In de Vavr-bibliotheek wordt de paarfunctionaliteit geleverd door het onveranderlijke Tuple2 klasse:

Tuple2-paar = nieuwe Tuple2 (4, "Vier"); Geheel getal sleutel = paar._1 (); Tekenreekswaarde = paar._2 (); 

In deze implementatie kunnen we het object niet wijzigen nadat het is gemaakt, dus mutatiemethoden retourneren een nieuwe instantie die de opgegeven wijziging bevat:

tuplePair = pair.update2 ("Nieuwe vier"); 

5. Alternatief I - Eenvoudige containerklasse

Ofwel door gebruikersvoorkeur of bij afwezigheid van een van de bovengenoemde bibliotheken, is een standaardoplossing voor de paarfunctionaliteit het maken van een eenvoudige containerklasse die de gewenste retourwaarden verpakt.

Het grootste voordeel hier is de mogelijkheid om onze naam op te geven, waardoor wordt voorkomen dat dezelfde klasse verschillende domeinobjecten vertegenwoordigt:

openbare klasse CustomPair {privé String-sleutel; private String-waarde; // standaard getters en setters}

6. Alternatief II - Arrays

Een andere veel voorkomende oplossing is door een eenvoudige array met twee elementen te gebruiken om vergelijkbare resultaten te bereiken:

privé-object [] getPair () {// ... retourneer nieuw object [] {sleutel, waarde}; }

Meestal bevindt de sleutel zich op index nul van de array, terwijl de bijbehorende waarde zich op index één bevindt.

7. Conclusie

In deze tutorial hebben we het concept van Paren in Java en de verschillende implementaties die beschikbaar zijn in core Java en andere bibliotheken van derden.

Zoals altijd kun je de code die deze tutorial ondersteunt, vinden op GitHub.


$config[zx-auto] not found$config[zx-overlay] not found