Používanie párov v Jave

1. Prehľad

V tomto rýchlom článku rozoberáme veľmi užitočný koncept programovania známy ako a Pár. Páry poskytujú pohodlný spôsob zaobchádzania s jednoduchým priradením kľúča k hodnote a sú obzvlášť užitočné, keď chceme z metódy vrátiť dve hodnoty.

Jednoduchá implementácia a Pár je k dispozícii v základných knižniciach Java. Niektoré knižnice tretích strán, ako napríklad Apache Commons a Vavr, navyše vystavili túto funkcionalitu vo svojich príslušných rozhraniach API.

2. Implementácia jadra Java

2.1. The Pár Trieda

The Pár triedy nájdete v javafx.util balíček. Konštruktor tejto triedy má dva argumenty, kľúč a zodpovedajúcu hodnotu:

Párový pár = nový pár (1, „Jeden“); Celočíselný kľúč = pair.getKey (); Reťazcová hodnota = pair.getValue (); 

Tento príklad ilustruje jednoduchý Celé číslo do String mapovanie pomocou konceptu Pair.

Ako je zobrazené, kľúč v pár objekt sa získa vyvolaním a getKey () metóda, zatiaľ čo sa hodnota získava volaním getValue ().

2.2. AbstractMap.SimpleEntry a AbstractMap.SimpleImmutableEntry

SimpleEntry je definovaná ako vnorená trieda vo vnútri AbstractMap trieda. Na vytvorenie objektu tohto typu môžeme poskytnúť kľúč a hodnotu konštruktoru:

AbstractMap.SimpleEntry entry = new AbstractMap.SimpleEntry (1, "one"); Celočíselný kľúč = entry.getKey (); Hodnota reťazca = entry.getValue ();

Ku kľúču a hodnote je možné získať prístup pomocou štandardných metód getra a setra.

Okrem toho AbstractMap trieda obsahuje aj vnorenú triedu, ktorá predstavuje nemenný pár: SimpleImmutableEntry trieda:

AbstractMap.SimpleImmutableEntry entry = new AbstractMap.SimpleImmutableEntry (1, "one");

Funguje to podobným spôsobom ako trieda premenlivých párov, ibaže hodnotu páru nie je možné zmeniť. Pokus o to bude mať za následok UnsupportedOperationException.

3. Apache Commons

V knižnici Apache Commons nájdeme Pár trieda v org.apache.commons.lang3.tuple balíček. Toto je abstraktná trieda, takže ju nie je možné vytvoriť priamo.

Nájdeme tu dve podtriedy - predstavujúce nemenné a premenlivé páry: ImmutablePair a MutablePair.

Obe implementácie majú prístup k metódam získavania / nastavovania kľúčov / hodnôt:

Pár ImmutablePair = nový ImmutablePair (2, „dva“); Celočíselný kľúč = pair.getKey (); Reťazcová hodnota = pair.getValue ();

Nie je prekvapením, že došlo k pokusu o vyvolanie setValue () na ImmutablePair má za následok UnsupportedOperationException.

Ale operácia je úplne platná pre premenlivú implementáciu:

Párový pár = nový MutablePair (3, „tri“); pair.setValue ("Nové tri"); 

4. Vavr

V knižnici Vavr poskytuje párovú funkčnosť nemenný Tuple2 trieda:

Pár Tuple2 = nový Tuple2 (4, „Štyri“); Celočíselný kľúč = pair._1 (); Hodnota reťazca = pair._2 (); 

V tejto implementácii nemôžeme objekt po vytvorení upraviť, takže metódy mutácie vracajú novú inštanciu, ktorá obsahuje zadanú zmenu:

tuplePair = pair.update2 ("Nová štvorka"); 

5. Alternatíva I - trieda jednoduchého kontajnera

Podľa preferencie používateľa alebo v prípade absencie ktorejkoľvek z vyššie uvedených knižníc je štandardným riešením pre funkčnosť páru vytvorenie jednoduchej triedy kontajnera, ktorá obsahuje požadované návratové hodnoty.

Najväčšou výhodou je schopnosť poskytnúť naše meno, čo pomáha zabrániť tomu, aby rovnaká trieda predstavovala rôzne objekty domény:

public class CustomPair {private String key; hodnota súkromného reťazca; // štandardné getre a setre}

6. Alternatíva II - polia

Ďalším bežným riešením je dosiahnutie jednoduchých výsledkov pomocou jednoduchého poľa s dvoma prvkami:

private Object [] getPair () {// ... vrátiť nový objekt [] {kľúč, hodnota}; }

Kľúč sa zvyčajne nachádza na nule indexu poľa, zatiaľ čo jeho zodpovedajúca hodnota sa nachádza na indexe jedna.

7. Záver

V tomto tutoriáli sme diskutovali o koncepcii Páry v Jave a rôznych implementáciách dostupných v jadre Javy, ako aj v iných knižniciach tretích strán.

Ako vždy, kód podporujúci tento tutoriál nájdete na GitHub.