logo

Java Tuple

A násobný je dátová štruktúra, ktorá môže obsahovať objekty rôznych typov. Tieto objekty nie sú navzájom prepojené, ale majú význam, keď ich zvažujeme kolektívne. V tejto časti diskutujeme čo je tuple , vlastnosti, veľkosť, a operácií n-tic. Tiež budeme diskutovať o implementácia n-tice v jazyku Java .

Čo je to n-tica?

Vo všeobecnosti a násobný je usporiadaná zbierka predmetov. V n-tici sú dáta uložené ako objekt v samostatnom bajtovom poli. Má hodnoty oddelené čiarkou v hranatých zátvorkách []. Tuple sú nemenný, na rozdiel od dátovej štruktúry zoznamov. N-tica môže obsahovať viacero n-tic. Môže byť tiež považovaný za anonymný objekt.

Vlastnosti Tuple

Tuple má nasledujúce vlastnosti:

  • to je typovo bezpečný, opakovateľný, nemenný, a serializovateľné .
  • Implementuje toString(), rovná sa(), a hashCode()
  • Tiež implementuje Porovnateľné (Porovnateľné n-tice)

Príklad tuple

Uvažujme o nasledujúcom príklade.

 ['Sophia', 'Female', 22, 'Marketing Manager'] 

Vyššie uvedená n-tica je a kvarteto tuple pretože má štyri prvky (predmety). Pozorujeme, že každý objekt je iného typu. Ale keď to zvážime kolektívne, má to špecifický význam. Vyššie uvedená n-tica predstavuje údaje zamestnanca, ako je meno, pohlavie, vek a označenie.

Pozrime sa na niektoré ďalšie príklady n-tic.

otázky java interview
 ['Java', 'Object-oriented', 14] ['John', 'Wick' 21, 'USA', false, '[email protected]'] [3, 'Samsung', 'Galaxy S2', 37000.00] 

Tuple v Jave

V Jave je n-tica všeobecná dátová štruktúra, ktorá s každým prvkom zaobchádza ako s objektom a tieto objekty sa ukladajú do samostatného bajtového poľa. Inými slovami, môžeme tiež povedať, že tuple je an objednal zbierka predmetov rôznych typov.

Funkcionalitu n-tice možno implementovať pomocou dátovej štruktúry List a Array, ale tieto dátové štruktúry neobsahujú rôzne typy dátových typov podľa návrhu. Je teda jasné, že heterogénne n-tice pomocou štandardnej dátovej štruktúry (List/Array) nie je v Jave možné. Keďže sme požadovali násobný dátovú štruktúru na splnenie požiadavky držby homogénne dátová štruktúra.

Poznač si to dátová štruktúra n-tice nie je prítomná v programovaní Java , predvolene. Ale môžeme implementovať dátovú štruktúru n-tice pomocou knižnice tretej strany s názvom javatuples .

Pred prechodom na implementáciu si najskôr stiahneme súbor javatuples.jar súbor. A pridajte tento súbor do cesty k projektu.

Môžeme tiež použiť nasledujúcu závislosť v pom.xml na implementáciu dátovej štruktúry n-tic v jazyku Java.

 org.javatuples javatuples 1.2 

Implementujme n-ticu a vytvorme jednoduchý program Java tuple.

Knižnica Javatuples

The javatuples knižnica má triedy n-tice, ktoré zodpovedajú veľkosti n-tice. Tuple môžu mať rôznu veľkosť. N-tica môže obsahovať max 10 prvkov. Implementácia každej n-tice je iná. Hierarchia tried je nasledovná.

 Java.lang.Object ↳ org.javatuples.Tuple ↳ org.javatuples.ClassName 

Java Tuple Class

The Násobný je abstraktná základná trieda pre všetky n-ticové triedy, do ktorých patrí org.javatuples balík. Všetky metódy triedy n-tice sú verejné a konečné. Nasledujúca tabuľka sumarizuje metódy triedy n-tice. Implementuje iterovateľné a serializovateľné rozhrania.

Metóda Syntax Popis
obsahuje() public final boolean obsahuje(java.lang.Object value) Kontroluje, či má n-tica špecifický prvok alebo nie.
obsahujeVšetko() public final boolean obsahujeVšetko(kolekcia java.util.Collection) Vráti hodnotu true, ak táto n-tica obsahuje všetky prvky zadanej kolekcie (List/Array).
rovná sa() verejné konečné boolovské rovná sa(java.lang.Object obj) Prepíše rovná sa() metóda triedy Object.
getSize() verejný abstrakt int getSize() Vráti veľkosť n-tice.
getValue() verejné konečné java.lang.Object getValue(int pos) Získajte hodnotu na konkrétnej pozícii v n-tici. Táto metóda musí vrátiť objekt, takže jej použitím stratíte typovú bezpečnosť, ktorú získate s getValueX() metódy.
hashCode() public final int hashCode() Vracia hash kód pre reťazec. Prepíše to hashCode() metóda triedy Object.
indexOf() public final int indexOf(java.lang.Object value) Vráti index v rámci tohto reťazca prvého výskytu zadaného podreťazca.
iterátor() public final java.util.Iterator iterator() Vracia iterátor nad prvkami v tejto n-tici v správnom poradí.
lastIndexOf() public final int lastIndexOf(java.lang.Object value) Vráti index v rámci tohto reťazca posledného výskytu zadaného podreťazca.
toArray() verejné finále java.lang.Object[] toArray() Konvertuje n-ticu na pole.
natiahnuť() verejné finále java.lang.String toString() Vracia reťazcovú reprezentáciu objektu. Prepíše metódu toString() triedy Object.
listovať() public final java.util.List toList() Skonvertuje n-ticu na zoznam.

Priame známe podtriedy

Veľkosť Tuple Názov triedy n-tice Príklad
Jeden Element Jednotka Jednotka
Dva prvky Spárovať Spárovať
Tri prvky Trojčatá Trojčatá
Štyri prvky Kvarteto Kvarteto
Päť prvkov Quintet Quintet
Šesť prvkov Sextet Sextet
Sedem prvkov sedem sedem
Osem prvkov Oktet Oktet
Deväť prvkov Ennead Ennead
Desať prvkov desaťročie desaťročie

Okrem vyššie uvedených tried existujú dve ďalšie triedy poskytované knižnicou javatuples, t.j. KeyValue a LabelValue . Tieto dve triedy sú podobné Spárovať triedy a poskytujú rovnakú funkčnosť, ale v inej sémantike.

Každá trieda n-tice implementuje nasledujúce tri rozhrania:

  • Iterovateľné
  • Porovnateľné
  • Serializovateľné

Implementácia Tuple

Implementácia n-tice v Jave je veľmi jednoduchá. Musíme vytvoriť inštanciu triedy tuple, ktorá zodpovedá veľkosti.

TupleExample.java

 import org.javatuples.Quartet; public class TupleExample { public static void main(String args[]) { //create a pair tuple from the constructor Quartet quartet = new Quartet('Sophia', 'Female', 22, 'Marketing Manager'); //print the tuples objects System.out.println('The details of the employee are: ' + quartet); } } 

Výkon:

 The details of the employee are: [Sophia, Female, 22, Marketing Manager] 

Tuple Operations

Na n-tici je možné vykonať nasledujúce operácie:

rozdiel medzi $ a $ $
  • Vytvorenie Tuple
  • Získavanie hodnôt
  • Nastavenie hodnôt
  • Pridávanie prvkov
  • Iterujte cez Tuple
  • Previesť tuple na zoznam
  • Hľadá sa v Tuple

Vytváranie Tuple

Existujú tri spôsoby, ako vytvoriť n-ticu:

  • Pomocou metódy with().
  • Pomocou konštruktora
  • Pomocou kolekcie

Pozrime sa na vyššie uvedené tri spôsoby vytvorenia n-tice.

Pomocou metódy with().

Knižnica javatuples poskytuje s () metóda, ktorá vytvorí n-ticu so zadanými hodnotami. Metóda patrí medzi org.javatuples.Pair balík. Používa sa na vytváranie inštancií objektov s hodnotami.

Syntax:

 ClassName object = ClassName.with(value-1, value-2, ......, value-n); 

Príklad:

 Pair pair = Pair.with('iPhone 12', 112000.00); 

Vyššie uvedený objekt triedy Pair vytvorí n-ticu s dvoma hodnotami. Vytvorme pre to Java program.

CreateTupleExample1.java

 import org.javatuples.Pair; class CreateTupleExample1 { public static void main(String args[]) { Pair pair = Pair.with(9086651, 'Dell Laptop'); System.out.println(pair); } } 

Výkon:

 [9086651, Dell Laptop] 

Pomocou konštruktora

V tomto prípade vytvoríme konštruktor triedy podľa požiadavky.

Syntax:

 ClassName object = new ClassName (value-1, value-2, ……., value-n); 

Príklad:

anakonda vs pytónový had
 Quintet quintet = new Quintet (91237, 'Mac Book Air', 88490.00, '8-Core CPU', 4); 

Vytvorme Java program na vytvorenie n-tice pomocou konštruktora.

CreateTupleExample2.java

 import org.javatuples.Quintet; class CreateTupleExample1 { public static void main(String args[]) { Quintet quintet = new Quintet (91237, 'Mac Book Air', 88490.00, '8-Core CPU', 4); System.out.println(quintet); } } 

Výkon:

 [91237, Mac Book Air, 88490.0, 8-Core CPU, 4] 

Pomocou kolekcie

Knižnica javatuples nám umožňuje vytvoriť n-ticu z kolekcie pomocou fromCollection() metóda. Umožňuje nám tiež vytvoriť n-ticu z poľa pomocou príkazu fromArray() metóda. Všimnite si, že kolekcia/pole musí mať rovnaký typ a hodnoty ako n-tica.

Kolekcia/pole musí mať rovnaký typ ako Tuple a počet hodnôt v kolekcii/pole sa musí zhodovať s triedou Tuple.

Syntax:

 ClassName object = ClassName.fromCollection(list); ClassName object = ClassName.fromArray(array); 

Príklad:

 Octet p1 = Octet.fromCollection(list); Sextet p2 = Sextet.fromArray(arr); 

CreateTupleExample3.java

 import java.util.ArrayList; import java.util.List; import org.javatuples.Sextet; import org.javatuples.Octet; class CreateTupleExample3 { public static void main(String args[]) { //creating a list List list = new ArrayList(); //adding elements to the list list.add('C'); list.add('C++'); list.add('Java'); list.add('Python'); list.add('Scala'); list.add('Ruby'); list.add('PHP'); list.add('COBOL'); //creating an object of Pair class and passing the list Octet p1 = Octet.fromCollection(list); //creating an Array String[] arr = {'One', 'Two', 'Three', 'Four', 'Five', 'Six'}; //creating an object of the Pair class and invoking the fromArray() method Sextet p2 = Sextet.fromArray(arr); //prints the tuple created using list System.out.println(p1); //prints the tuple using Array System.out.println(p2); } } 

Výkon:

 [C, C++, Java, Python, Scala, Ruby, PHP, COBOL] [One, Two, Three, Four, Five, Six] 

Získajte hodnoty

Knižnica javatuples nám tiež umožňuje získať hodnoty z n-tice na zadanom indexe pomocou getValueX() metóda. Kde X označuje hodnotu indexu objektu. Indexovanie začína od 0.

Príklad:

 Pair pair = new Pair(value-1, value-2); type1 val1 = pair.getValue0(); 

GetValueExample.java

 import org.javatuples.Pair; class GetTupleValue { public static void main(String args[]) { //creating a tuple Pair pair = Pair.with(12, 'Andrew'); //getting values at index 1 System.out.println(pair.getValue1()); } } 

Výkon:

 [Andrew] 

Nastavte hodnoty

Ako sme diskutovali vyššie, n-tice sú nemenné. Po vytvorení ich teda nemožno upravovať. Na prekonanie tohto problému poskytuje knižnica javatuples setValueX() metóda. Kde X je hodnota indexu, pri ktorej chceme nastaviť konkrétnu hodnotu. Metóda vytvorí kópiu n-tice s novo pridanou hodnotou pri zadanom indexe a vráti rovnakú n-ticu.

Príklad:

 Pair pair = new Pair(value-1, value-2); type1 val1 = pair.getValue0(); 

SetValueExample.java

 import org.javatuples.Pair; class SetTupleValue { public static void main(String args[]) { //creating a tuple Pair p1 = Pair.with(67, 69); //setting tuple value at index 1 Pair p2 = p1.setAt1(68); System.out.println(p2); } } 

Výkon:

 [67, 68] 

Pridanie hodnoty

Existujú dva spôsoby, ako pridať hodnoty do n-tice:

  • Na konci tuple
  • Pri konkrétnom indexe

Na konci Tuple

Knižnica javatuples poskytuje pridať () metóda na pridávanie objektov do n-tice. Pridá objekt na koniec n-tice a vráti novú n-ticu podľa počtu prvkov.

Predpokladajme, že máme n-ticu s dvoma prvkami a chceme k n-tici pridať ďalší prvok. V takom prípade dvojica nebude podporovať tretí prvok. Preto, keď pridáme prvok do párovej n-tice, prevedie sa na trojitú n-ticu. Pozrime sa na príklad.

char to int java

AddElementInTuple.java

 import org.javatuples.Pair; import org.javatuples.Triplet; public class AddElementInTuple { public static void main(String args[]) { Pair pair = Pair.with('Jack', 46); Triplet triplet = pair.add('Finance Professional'); System.out.println(pair); System.out.println(triplet); } } 

Výkon:

 [Jack, 46] [Jack, 46, Finance Professional] 

Môžeme tiež pridať jednu n-ticu k druhej n-tici. Zvyšuje počet prvkov v novo vygenerovanej n-tici. Preto vráti typ n-tice na základe počtu prvkov prítomných po pridaní.

AddTuplesExample.java

 import org.javatuples.Quartet; import org.javatuples.Septet; import org.javatuples.Triplet; public class AddTuplesExample { public static void main(String args[]) { //creating a tuple with three elements Triplet triplet = Triplet.with('Mango', 'Grapes', 'Papaya'); //creating an object of quartet tuple and adding an elements at index-1 in triplet tuple Quartet quartet = triplet.addAt1('Banana'); //adding quartet and triplet tuple we get a septet tuple i.e. 3+4=7 //the following statement can be written as Septet septet = quartet.add(triplet); Septet septet = quartet.add(triplet); System.out.println(triplet); System.out.println(quartet); System.out.println(septet); } } 

Výkon:

 [Mango, Grapes, Papaya] [Mango, Banana, Grapes, Papaya] [Mango, Banana, Grapes, Papaya, Mango, Grapes, Papaya] 

Pri špecifikovanom indexe

Štandardne sa nové prvky pridávajú na koniec n-tice. Ale môžeme pridať prvky v zadanom indexe pomocou addX() metóda.

AddAtIndexExample.java

 import org.javatuples.Quartet; import org.javatuples.Triplet; public class AddAtIndexExample { public static void main(String args[]) { //creating a tuple with three elements Triplet triplet = Triplet.with('MCA', 'M.Sc.', 'MBBS'); //creating an object of quartet tuple and adding an element at index-2 in triplet tuple Quartet quartet = triplet.addAt2('M.Tech'); System.out.println(triplet); System.out.println(quartet); } } 

Výkon:

 [MCA, M.Sc., MBBS] [MCA, M.Sc., M.Tech, MBBS] 

Hľadanie prvku

Môžeme tiež hľadať prvok, ktorý sa nachádza v n-tici. Pre vyhľadávanie javatuples knižnica poskytuje obsahuje() metóda triedy Tuple. Vracia boolovskú hodnotu pravda ak je prvok prítomný, vráti sa else falošný . Pozrime sa na príklad.

SearchingElementExample.java

 import org.javatuples.Pair; class SearchingElementExample { public static void main(String args[]) { Pair pair = Pair.with(34, 'Jack'); //returns true because Jack is present in tuple boolean res1 = pair.contains('Jack'); //returns false because Andrew is not present in tuple boolean res2 = pair.contains('Andrew'); System.out.println(res1); System.out.println(res2); } } 

Výkon:

 true false 

Konvertovať tuple na kolekciu alebo pole

Každá trieda n-tice má metódy asList() a toArray(), ktoré vrátia List a Array. Pozrime sa na príklad.

TupleToCollection.java

 import java.util.Arrays; import java.util.List; import org.javatuples.Quartet; public class TupleToCollection { public static void main(String args[]) { //Convert to list Quartet quartet = Quartet.with('Dog', 12,'German Shepherd', 23.89); //converts to list List list = quartet.toList(); //prints list System.out.println(list); //Converts to array Object[] quartletArr = quartet.toArray(); //prints array System.out.println(Arrays.toString(quartletArr)); } } 

Výkon:

binárne vyhľadávanie
 [Dog, 12, German Shepherd, 23.89] [Dog, 12, German Shepherd, 23.89] 

Všimnite si, že tuple môže obsahovať heterogénne typy, takže výsledný typ bude z Zoznam alebo objekt[] podľa toho.

Iterácia cez Tuple

Všetky triedy tuple implementujú Iterovateľné rozhranie. Takže môžeme iterovať n-ticu rovnakým spôsobom ako kolekcie alebo polia.

IterateTuple.java

 import org.javatuples.Quartet; class IterateTuple { public static void main(String args[]) { //creating a quartet tuple Quartet quartet = Quartet.with('Dell', 5600.00, 34, 'Digital Solutions'); //iterate over tuple for(Object obj : quartet) { //prints elements System.out.println(obj); } } } 

Výkon:

 Dell 5600.0 34 Digital Solutions 

Tuple vs. Zoznam/Pole

Java Tuple
Násobný Zoznam
Je to súbor hodnôt oddelených čiarkou, ktoré sú uzavreté v zátvorka . Je to súbor hodnôt oddelených čiarkou, ktoré sú uzavreté v hranaté zátvorky .
Zátvorka je voliteľné . Hranaté zátvorky sú povinné .
to je nemenný . to je premenlivé .
Vyžaduje to menej Pamäť. Vyžaduje si to viac pamäte.
menej továrenské metódy. viac továrenské metódy.
Má a pevné dĺžka. premenlivý dĺžky.
Ukladá heterogénne údajov. Ukladá homogénne údajov.
Je vhodný pre veľký množstvo údajov. Je vhodný pre a malý množstvo dát.
Môže byť uložený v a zoznam . Môže byť uložený vo vnútri a násobný .
to je rýchlejšie v porovnaní so Zoznamom. to je pomalšie v porovnaní s tuple.
Je reprezentovaný ako t1 = (1, 2, 3, 4, 5) Je reprezentovaný ako l1 = [1, 2, 3, 4, 5]