Korištenje parova u Javi

1. Pregled

U ovom kratkom članku raspravljamo o vrlo korisnom konceptu programiranja poznatom kao Par. Parovi pružaju prikladan način rukovanja jednostavnim ključem za pridruživanje vrijednosti i posebno su korisni kada želimo vratiti dvije vrijednosti iz metode.

Jednostavna provedba a Par dostupan je u osnovnoj Java knjižnici. Osim toga, određene biblioteke trećih strana, poput Apache Commons i Vavr, izložile su ovu funkcionalnost u svojim API-ima.

2. Primjena jezgre Java

2.1. The Par Razred

The Par razred možete pronaći u javafx.util paket. Konstruktor ove klase uzima dva argumenta, ključ i odgovarajuću vrijednost:

Parni par = novi Par (1, "Jedan"); Cjeloviti ključ = pair.getKey (); Vrijednost niza = pair.getValue (); 

Ovaj primjer ilustrira jednostavan Cijeli broj do Niz mapiranje pomoću koncepta Pair.

Kao što je prikazano, ključ u par objekt se dohvaća pozivanjem a getKey () metoda dok se vrijednost dohvaća pozivom getValue ().

2.2. AbstractMap.SimpleEntry i AbstractMap.SimpleImmutableEntry

SimpleEntry definira se kao ugniježđena klasa unutar SažetakKarta razred. Da bismo stvorili objekt ove vrste, konstruktoru možemo pružiti ključ i vrijednost:

AbstractMap.SimpleEntry entry = novi AbstractMap.SimpleEntry (1, "jedan"); Cjeloviti ključ = entry.getKey (); Vrijednost niza = entry.getValue ();

Ključu i vrijednosti može se pristupiti putem standardnih metoda dobivanja i postavljanja.

Uz to, SažetakKarta klasa također sadrži ugniježđenu klasu koja predstavlja nepromjenjivi par: SimpleImmutableEntry razred:

AbstractMap.SimpleImmutableEntry entry = novi AbstractMap.SimpleImmutableEntry (1, "jedan");

To djeluje na sličan način kao promjenjiva klasa para, osim što vrijednost para ne može biti promijenjena. Pokušaj toga rezultirat će datotekom UnsupportedOperationException.

3. Apache Commons

U biblioteci Apache Commons možemo pronaći Par razred u org.apache.commons.lang3.tuple paket. Ovo je apstraktna klasa, pa se ne može izravno instancirati.

Ovdje možemo pronaći dvije potklase - koje predstavljaju nepromjenjive i promjenjive parove: ImmutablePair i Promjenjivi par.

Obje implementacije imaju pristup metodama dobivača / vrijednosti ključa / vrijednosti:

Par ImmutablePair = novi ImmutablePair (2, "Dva"); Cjeloviti ključ = pair.getKey (); Vrijednost niza = pair.getValue ();

Ne iznenađuje pokušaj pozivanja setValue () na Nepromjenjivi par rezultira an UnsupportedOperationException.

Ali operacija je u potpunosti važeća za promjenjivu implementaciju:

Parni par = novi MutablePair (3, "Three"); pair.setValue ("Nova tri"); 

4. Vavr

U biblioteci Vavr funkcionalnost para pruža nepromjenjiv Korijen2 razred:

Par Tuple2 = novi Tuple2 (4, "Četiri"); Cijeli broj ključ = par._1 (); Vrijednost niza = pair._2 (); 

U ovoj implementaciji ne možemo mijenjati objekt nakon izrade, pa mutirajuće metode vraćaju novu instancu koja uključuje predviđenu promjenu:

tuplePair = pair.update2 ("Nova četvorka"); 

5. Alternativa I - Jednostavna klasa kontejnera

Bilo prema korisničkim željama ili u nedostatku bilo koje od spomenutih knjižnica, standardno rješenje za funkcionalnost para stvara jednostavnu klasu spremnika koja obavija željene povratne vrijednosti.

Najveća prednost ovdje je sposobnost davanja našeg imena što pomaže u izbjegavanju da ista klasa predstavlja različite objekte domene:

javna klasa CustomPair {privatni ključ niza; vrijednost privatnog niza; // standardni geteri i postavljači}

6. Alternativa II - Nizovi

Sljedeće uobičajeno rješenje je korištenje jednostavnog niza s dva elementa za postizanje sličnih rezultata:

private Object [] getPair () {// ... return new Object [] {key, value}; }

Tipično se ključ nalazi na indeksu nula niza, dok se njegova odgovarajuća vrijednost nalazi na indeksu jedan.

7. Zaključak

U ovom uputstvu raspravljali smo o konceptu Parovi u Javi i različite implementacije dostupne u osnovnoj Javi, kao i u drugim bibliotekama trećih strana.

Kao i uvijek, kod koji podupire ovaj vodič možete pronaći na GitHubu.


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