Párok használata Java-ban

1. Áttekintés

Ebben a rövid cikkben az a néven ismert rendkívül hasznos programozási koncepciót tárgyaljuk Pár. Párok kényelmes társítást nyújtanak az egyszerű társításhoz az érték társításhoz, és különösen hasznosak, ha egy módszerből két értéket akarunk visszaadni.

Egyszerű megvalósítása a Pár elérhető az alapvető Java könyvtárakban. Ezen túlmenően bizonyos harmadik féltől származó könyvtárak, mint például az Apache Commons és a Vavr, felfedték ezt a funkciót a saját API-jukban.

2. Core Java implementáció

2.1. A Pár Osztály

A Pár osztály megtalálható a javafx.util csomag. Ennek az osztálynak a konstruktora két argumentumot vesz fel, egy kulcsot és a hozzá tartozó értéket:

Páros pár = új pár (1, "Egy"); Egész szám = pair.getKey (); Karakterlánc értéke = pair.getValue (); 

Ez a példa egyszerű Egész szám nak nek Húr térképezés a Pair koncepció használatával.

Mint látható, a kulcs a pár objektum lekérése az a meghívásával getKey () metódust, míg az értéket behívva hívjuk meg getValue ().

2.2. AbstractMap.SimpleEntry és AbstractMap.SimpleImmutableEntry

SimpleEntry alatt definiált beágyazott osztály AbstractMap osztály. Ilyen típusú objektum létrehozásához kulcsot és értéket adhatunk a konstruktornak:

AbstractMap.SimpleEntry bejegyzés = új AbstractMap.SimpleEntry (1, "egy"); Egész szám = entry.getKey (); Karakterlánc értéke = entry.getValue ();

A kulcs és az érték standard getter és setter módszerekkel érhető el.

Ezenkívül a AbstractMap osztály tartalmaz egy beágyazott osztályt is, amely egy változhatatlan párt képvisel: a SimpleImmutableEntry osztály:

AbstractMap.SimpleImmutableEntry bejegyzés = új AbstractMap.SimpleImmutableEntry (1, "egy");

Ez a mutábilis pár osztályhoz hasonló módon működik, azzal a különbséggel, hogy a pár értéke nem változtatható meg. Ennek megkísérlése egy UnsupportedOperationException.

3. Apache Commons

Az Apache Commons könyvtárban megtalálhatjuk a Pár osztály a org.apache.commons.lang3.tuple csomag. Ez egy elvont osztály, ezért nem lehet közvetlenül példányosítani.

Itt találhatunk két alosztályt, amelyek változhatatlan és változtatható párokat képviselnek: ImmutablePair és MutablePair.

Mindkét megvalósítás hozzáfér a kulcs / érték getter / setter módszerekhez:

ImmutablePair pár = új ImmutablePair (2, "Kettő"); Egész szám = pair.getKey (); Karakterlánc értéke = pair.getValue ();

Nem meglepő módon egy kísérlet a hivatkozásra érték beállítása() a ImmutablePair eredményez egy UnsupportedOperationException.

De a művelet teljesen érvényes egy módosítható megvalósításra:

Pár pár = új MutablePair (3, "Három"); pair.setValue ("Új három"); 

4. Vavr

A Vavr könyvtárban a pár funkcionalitását a megváltoztathatatlan biztosítja Tuple2 osztály:

Tuple2 pár = új Tuple2 (4, "Négy"); Egész szám = pár._1 (); Karakterlánc értéke = pár._2 (); 

Ebben a megvalósításban nem tudjuk módosítani az objektumot a létrehozás után, ezért a mutációs módszerek új példányt adnak vissza, amely tartalmazza a megadott módosítást:

tuplePair = pair.update2 ("Új négy"); 

5. I. alternatíva - Egyszerű konténer osztály

Akár a felhasználó preferenciája alapján, akár a fent említett könyvtárak hiányában a páros funkcionalitás standard megoldása egy egyszerű tárolóosztály létrehozása, amely beburkolja a kívánt visszatérési értékeket.

A legnagyobb előny itt a nevünk megadásának képessége, amely segít elkerülni, hogy ugyanaz az osztály különböző domain objektumokat képviseljen:

public class CustomPair {private String kulcs; privát String érték; // szabványos mérőeszközök és beállítók}

6. II. Alternatíva - tömbök

Egy másik gyakori megoldás az, ha két elemből álló egyszerű tömböt használunk hasonló eredmények elérése érdekében:

private Object [] getPair () {// ... return new Object [] {kulcs, érték}; }

A kulcs általában a tömb nulla indexénél található, míg annak megfelelő értéke az első indexnél található.

7. Következtetés

Ebben az oktatóanyagban megvitattuk a Párok a Java-ban és a Java-ban, valamint más, harmadik féltől származó könyvtárakban elérhető különböző megvalósításokban.

Mint mindig, a GitHubon megtalálhatja az oktatóanyagot támogató kódot.