Úvod do Javatuples

1. Prehľad

Tuple je kolekcia niekoľkých prvkov, ktoré navzájom môžu alebo nemusia súvisieť. Inými slovami, n-tice možno považovať za anonymné objekty.

Napríklad [„RAM“, 16, „Astra“] je n-tica obsahujúca tri prvky.

V tomto článku sa pozrieme na skutočne jednoduchú knižnicu, ktorá nám umožňuje pracovať s n-tými dátovými štruktúrami s názvom javatuples.

2. Zabudované Javatuples Triedy

Táto knižnica nám poskytuje desať rôznych tried, ktoré by stačili na splnenie väčšiny našich požiadaviek týkajúcich sa n-tic:

  • Jednotka
  • Pár
  • Triplet
  • Kvarteto
  • Kvinteto
  • Sextet
  • Septet
  • Oktet
  • Ennead
  • Dekáda

Okrem vyššie uvedených tried existujú ešte dve ďalšie triedy, KeyValue a LabelValue, ktoré poskytujú podobné funkcie ako Pár, ale líšia sa sémantikou.

Podľa oficiálnej stránky, všetky triedy vjavatuples sú bezpečné a nemenné. Každá z tried n-tice implementuje Iterable, Serializovateľnéa Porovnateľné rozhranie.

3. Pridanie závislosti Maven

Pridajme závislosť Maven do našej pom.xml:

 org.javatuples javatuples 1.2 

Skontrolujte prosím najnovšiu verziu úložiska Central Maven.

4. Vytváranie n-tíc

Vytvorenie n-tice je naozaj jednoduché. Môžeme použiť zodpovedajúce konštruktory:

Párový pár = nový pár ("Pár", 55);

Existuje tiež o niečo menej podrobný a sémanticky elegantný spôsob vytvárania n-tice:

Triplet triplet = Triplet.with („ahoj“, 23, 1,2);

Môžeme tiež vytvoriť n-tice z Iterable:

Zoznam listOfNames = Arrays.asList ("john", "doe", "anne", "alex"); Kvarteto kvarteto = Quartet.fromCollection (collectionOfNames);

Vezmite prosím na vedomie, že počet položiek v zbierke by sa mal zhodovať s typom n-tice, ktorú chceme vytvoriť. Napríklad nemôžeme vytvoriť a Kvinteto použitie vyššie uvedenej kolekcie vyžaduje presne päť prvkov. To isté platí pre každú inú triedu n-tic, ktorá má vyšší poriadok ako Kvinteto.

Môžeme však vytvoriť napríklad n-ticu nižšieho rádu Pár alebo a Triplet pomocou vyššie uvedenej kolekcie uvedením počiatočného indexu v fromIterable () metóda:

Pair pairFromList = Pair.fromIterable (listOfNames, 2);

Výsledkom vyššie uvedeného kódu bude vytvorenie a Pár obsahujúce "Anne“A„alex“.

N-tice možno pohodlne vytvoriť aj z ľubovoľného poľa:

Reťazec [] names = new Reťazec [] {"john", "doe", "anne"}; Triplet triplet2 = Triplet.fromArray (mená);

5. Získavanie hodnôt z Tuples

Každá trieda v javatuplesgetValueX () metóda na získanie hodnôt z n-tíc, kde X určuje poradie prvku vo vnútri n-tice. Rovnako ako indexy v poliach, hodnota X začína od nuly.

Vytvorme nové kvarteto a získajme niektoré hodnoty:

Quartet quartet = Quartet.with ("john", 72,5, 32, "1051 SW"); Názov reťazca = quartet.getValue0 (); Celé číslo age = quartet.getValue2 (); assertThat (meno) .isEqualTo ("john"); assertThat (vek) .isEqualTo (32);

Ako vidíme, pozícia „john„Je nula,“72.5”Je jeden a tak ďalej.

Všimnite si, že getValueX () metódy sú typovo bezpečné. To znamená, že sa nevyžaduje žiadne odlievanie.

Alternatívou k tomu je getValue (int pos) metóda. Zaujme nulovú pozíciu prvku, ktorý sa má načítať. Táto metóda nie je typovo bezpečná a vyžaduje explicitné odovzdanie:

Quartet quartet = Quartet.with ("john", 72,5, 32, "1051 SW"); Názov reťazca = (Reťazec) quartet.getValue (0); Celé číslo age = (Integer) quartet.getValue (2); assertThat (meno) .isEqualTo ("john"); assertThat (vek) .isEqualTo (32);

Upozorňujeme, že triedy KeyValue a LabelValue príslušné metódy getKey () / getValue () a getLabel () / getValue ().

6. Nastavenie hodnôt na n-tice

Podobný getValueX (), majú všetky triedy v javatuples setAtX () metódy. Opäť X sú nulové pozície pre prvok, ktorý chceme nastaviť:

Pair john = Pair.with ("john", 32); Pár alex = john.setAt0 ("alex"); assertThat (john.toString ()). isNotEqualTo (alex.toString ());

Dôležité tu je, že návratový typ setAtX () metóda je samotný typ n-tice. To je preto, že javatuple sú nemenné. Nastavením akejkoľvek novej hodnoty zostane pôvodná inštancia nedotknutá.

7. Pridávanie a odstraňovanie prvkov z n-tice

Do n-tíc môžeme pohodlne pridávať nové prvky. To však bude mať za následok vytvorenie novej n-tice o jednu objednávku vyššie:

Párový pár1 = Pair.with ("john", 32); Triplet triplet1 = pair1.add ("1051 SW"); assertThat (triplet1.contains ("john")); tvrdiťTo (triplet1.obsahuje (32)); assertThat (triplet1.contains ("1051 SW"));

Z vyššie uvedeného príkladu je zrejmé, že pridanie jedného prvku do a Pár vytvorí nový Triplet. Podobne pridanie jedného prvku do a Triplet vytvorí nový Kvarteto.

Vyššie uvedený príklad tiež demonštruje použitie obsahuje () metóda poskytovaná všetkými triedami v javatuples. Toto je skutočne praktická metóda na overenie, či n-tica obsahuje danú hodnotu.

Je tiež možné pridať jednu n-ticu k druhej pomocou pridať () metóda:

Párový pár1 = Pair.with ("john", 32); Dvojica pair2 = Pair.with ("alex", 45); Kvarteto kvarteto2 = pair1.add (pair2); assertThat (quartet2.containsAll (pair1)); assertThat (quartet2.containsAll (pair2));

Všimnite si použitie containsAll () metóda. Vráti sa to pravda ak sú všetky prvky pair1 sú prítomné v kvarteto2.

V predvolenom nastavení je pridať () metóda pridá prvok ako posledný prvok n-tice. Je však možné pridať prvok na danej pozícii pomocou addAtX () metóda, kde X je pozícia založená na nule, kde chceme pridať prvok:

Párový pár1 = Pair.with ("john", 32); Triplet triplet2 = pair1.addAt1 ("1051 SW"); assertThat (triplet2.indexOf ("john")). isEqualTo (0); assertThat (triplet2.indexOf ("1051 SW")). isEqualTo (1); tvrdiťTo (triplet2.indexOf (32)). isEqualTo (2);

Tento príklad pridáva znak String na pozícii 1, ktorú potom overí indexOf () metóda. Vezmite prosím na vedomie rozdiel v poradí typov pre Pár a Triplet po volaní na addAt1 () volanie metódy.

Môžeme tiež pridať viac prvkov pomocou ktoréhokoľvek z pridať () alebo addAtX () metódy:

Párový pár1 = Pair.with ("john", 32); Kvarteto kvarteto1 = pair1.add ("alex", 45); assertThat (quartet1.containsAll ("alex", "john", 32, 45));

Na odstránenie prvku z n-tice môžeme použiť znak removeFromX () metóda. Opäť X určuje nulovú pozíciu prvku, ktorý sa má odstrániť:

Párový pár1 = Pair.with ("john", 32); Jednotková jednotka = pair1.removeFrom0 (); assertThat (jednotka.obsahuje (32));

8. Prevod n-tíc na Zoznam / pole

Už sme videli, ako previesť a Zoznam na n-ticu. Pozrime sa teraz na to, ako konvertovať n-ticu na a Zoznam:

Quartet quartet = Quartet.with ("john", 72,5, 32, "1051 SW"); Zoznam zoznam = kvartet.toList (); assertThat (list.size ()). isEqualTo (4);

Je to celkom jednoduché. Tu si treba uvedomiť len to, že vždy dostaneme a Zoznam, aj keď n-tica obsahuje rovnaký typ prvkov.

Nakoniec konvertujeme n-ticu na pole:

Quartet quartet = Quartet.with ("john", 72,5, 32, "1051 SW"); Objekt [] pole = kvartet.toArray (); assertThat (array.length) .isEqualTo (4);

Je dosť jasné, že toArray () metóda vždy vráti Objekt [].

9. Záver

V tomto článku sme preskúmali knižnicu javatuples a zistili sme jej jednoduchosť. Poskytuje elegantnú sémantiku a jeho použitie je skutočne jednoduché.

Nezabudnite si kompletný zdrojový kód tohto článku pozrieť na GitHub. Celý zdrojový kód obsahuje trochu viac príkladov ako tu uvedených. Po prečítaní tohto článku by mali byť ďalšie príklady dostatočne ľahké na pochopenie.


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