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.