Bruke par i Java
1. Oversikt
I denne raske artikkelen diskuterer vi det svært nyttige programmeringskonseptet kjent som a Par. Par gir en praktisk måte å håndtere enkel nøkkel til verditilknytning og er spesielt nyttige når vi ønsker å returnere to verdier fra en metode.
En enkel implementering av en Par er tilgjengelig i de viktigste Java-bibliotekene. Utover det har visse tredjepartsbiblioteker som Apache Commons og Vavr eksponert denne funksjonaliteten i sine respektive APIer.
2. Core Java Implementation
2.1. De Par Klasse
De Par klassen finner du i javafx.util pakke. Konstruktøren av denne klassen tar to argumenter, en nøkkel og dens tilsvarende verdi:
Parpar = nytt par (1, "En"); Heltallnøkkel = pair.getKey (); Strengverdi = pair.getValue ();
Dette eksemplet illustrerer en enkel Heltall til String kartlegging ved bruk av Pair-konseptet.
Som vist er nøkkelen i par gjenstand hentes ved å påkalle a getKey () metode mens verdien hentes ved å ringe getValue ().
2.2. AbstractMap.SimpleEntry og AbstractMap.SimpleImmutableEntry
SimpleEntry er definert som en nestet klasse i AbstractMap klasse. For å lage et objekt av denne typen kan vi gi en nøkkel og verdi til konstruktøren:
AbstractMap.SimpleEntry entry = new AbstractMap.SimpleEntry (1, "one"); Heltallnøkkel = entry.getKey (); Strengverdi = entry.getValue ();
Nøkkelen og verdien kan nås via standard getter- og settermetoder.
I tillegg har AbstractMap klasse inneholder også en nestet klasse som representerer et uforanderlig par: SimpleImmutableEntry klasse:
AbstractMap.SimpleImmutableEntry entry = new AbstractMap.SimpleImmutableEntry (1, "one");
Dette fungerer på samme måte som den mutable parklassen, bortsett fra at verdien til paret ikke kan endres. Forsøk på å gjøre det vil resultere i en Ikke-støttetOperationException.
3. Apache Commons
I Apache Commons-biblioteket kan vi finne Par klasse i org.apache.commons.lang3.tuple pakke. Dette er en abstrakt klasse, så den kan ikke instantieres direkte.
Vi finner her to underklasser - som representerer uforanderlige og foranderlige par: ImmutablePair og MutablePair.
Begge implementeringene har tilgang til nøkkel / verdi-getter / setter-metoder:
ImmutablePair-par = nytt ImmutablePair (2, "To"); Heltallnøkkel = pair.getKey (); Strengverdi = pair.getValue ();
Ikke overraskende et forsøk på å påberope seg setValue () på Uforanderlig par resulterer i en Ikke-støttetOperationException.
Men operasjonen er helt gyldig for en foranderlig implementering:
Parpar = nytt MutablePair (3, "Tre"); pair.setValue ("Nye tre");
4. Vavr
I Vavr-biblioteket leveres parfunksjonaliteten av det uforanderlige Tuple2 klasse:
Tuple2-par = ny Tuple2 (4, "Fire"); Heltallnøkkel = par._1 (); Strengverdi = par._2 ();
I denne implementeringen kan vi ikke endre objektet etter opprettelsen, så mutasjonsmetoder returnerer en ny forekomst som inkluderer den angitte endringen:
tuplePair = pair.update2 ("New Four");
5. Alternativ I - Enkel beholderklasse
Enten ved brukerinnstillinger eller i fravær av noen av de nevnte bibliotekene, skaper en standard løsning for parfunksjonaliteten en enkel beholderklasse som bryter inn ønskede returverdier.
Den største fordelen her er evnen til å gi navnet vårt som hjelper til med å unngå å ha samme klasse som representerer forskjellige domeneobjekter:
offentlig klasse CustomPair {privat strengnøkkel; privat strengverdi; // standard getters og setters}
6. Alternativ II - Arrays
En annen vanlig løsning er å bruke en enkel matrise med to elementer for å oppnå lignende resultater:
privat objekt [] getPair () {// ... returner nytt objekt [] {nøkkel, verdi}; }
Vanligvis er nøkkelen plassert ved indeksen null i matrisen mens den tilsvarende verdien ligger i indeksen én.
7. Konklusjon
I denne veiledningen har vi diskutert begrepet Par i Java og de forskjellige implementeringene som er tilgjengelige i kjerne-Java, så vel som andre tredjepartsbiblioteker.
Som alltid kan du finne koden som støtter denne opplæringen på GitHub.