logo

Java Tuple

A tuple egy olyan adatstruktúra, amely különböző típusú objektumokat tartalmazhat. Ezek a tárgyak nem kapcsolódnak egymáshoz, de jelentésük van, ha együttesen tekintjük őket. Ebben a részben tárgyaljuk mi az a tuple , jellemzők, méret, és tevékenységek sorból. Továbbá megbeszéljük a tuple implementáció Java nyelven .

Mi az a tuple?

Általában véve a tuple tárgyak rendezett gyűjteménye. A sorban az adatok objektumként, külön bájttömbben tárolódnak. A vesszővel elválasztott értékeket szögletes zárójelben [] zárja. Tuples azok változhatatlan, ellentétben a Listák adatszerkezetével. Egy sor több sort is tartalmazhat. Anonim objektumnak is tekinthető.

A Tuple jellemzői

A Tuple a következő tulajdonságokkal rendelkezik:

  • Ez típusbiztos, ismételhető, megváltoztathatatlan, és szerializálható .
  • Megvalósítja a toString(), egyenlő(), és a hashCode()
  • Egyben megvalósítja a Hasonló (Tuple eszközök összehasonlítható)

Tuple példa

Tekintsük a következő példát.

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

A fenti sor a kvartett tuple mert van négy elemek (tárgyak). Megfigyeljük, hogy minden objektum más típusú. De ha együttesen vesszük, akkor konkrét jelentése van. A fenti sor egy alkalmazott adatait reprezentálja, mint például a név, nem, életkor és megnevezés.

Lássunk néhány további példát a sorokra.

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

Tuple Java nyelven

A Java nyelvben a tuple egy általános adatstruktúra, amely minden elemet objektumként kezel, és ezek az objektumok külön bájttömbben tárolódnak. Más szóval azt is mondhatjuk, hogy a tuple egy elrendelte különböző típusú tárgyak gyűjteménye.

A Tuple funkcionalitása megvalósítható a Lista és Tömb adatszerkezettel, de ezek az adatstruktúrák tervezésüknél fogva nem tartalmaznak különböző típusú adattípusokat. Ezért egyértelmű, hogy heterogén Szabványos adatstruktúrát (List/Array) használó tuple nem lehetséges a Java-ban. Mivel megkívántuk tuple adatstruktúra a birtoklás követelményének teljesítéséhez homogén adatszerkezet.

Vegye figyelembe, hogy Tuple adatstruktúra nincs jelen a Java programozásban , alapértelmezés szerint. De megvalósíthatjuk a tuple adatstruktúrát a harmadik féltől származó nevű könyvtár használatával javatuples .

Mielőtt rátérnénk a megvalósításra, először letöltjük a javatuples.jar fájlt. És adja hozzá ezt a fájlt a projekt elérési útjához.

Használhatjuk a következő függőséget is pom.xml fájlt a tuples adatstruktúra megvalósításához Java nyelven.

 org.javatuples javatuples 1.2 

Valósítsunk meg egy tuple-t, és hozzunk létre egy egyszerű Java tuple programot.

Javatuples könyvtár

A javatuples könyvtárban vannak a tuple osztályok, amelyek megfelelnek egy tuple méretének. A szálak eltérő méretűek lehetnek. Egy sor legfeljebb 10 elemeket. Az egyes sorok megvalósítása eltérő. Az osztályhierarchia a következő.

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

Java Tuple Class

A Tuple egy absztrakt alaposztály az összes tuple osztályhoz, amelyhez tartozik org.javatuples csomag. A tuple osztály összes metódusa nyilvános és végleges. Az alábbi táblázat összefoglalja a tuple osztály metódusait. Iterálható és szerializálható felületeket valósít meg.

Módszer Szintaxis Leírás
tartalmazza () nyilvános végleges logikai érték tartalmazza (java.lang.Object value) Ellenőrzi, hogy a leírónak van-e meghatározott eleme vagy sem.
tartalmazza az összeset() nyilvános végleges logikai érték tartalmazza az összeset(java.util.Collection gyűjtemény) Igazat ad vissza, ha ez a sor tartalmazza a megadott gyűjtemény (Lista/tömb) összes elemét.
egyenlő () nyilvános végleges logikai érték egyenlő (java.lang.Object obj) Felülbírálja a egyenlő () az Object osztály metódusa.
getSize() nyilvános absztrakt int getSize() A tuple méretét adja vissza.
getValue() nyilvános végleges java.lang.Object getValue(int pos) Szerezze meg az értéket a sor egy adott pozíciójában. Ennek a metódusnak vissza kell adnia az objektumot, így használatával elveszíti a típusbiztonságot, amelyet a getValueX() mód.
hash kód() nyilvános végleges int hashCode() Hash kódot ad vissza a karakterlánchoz. Felülírja a hash kód() az Object osztály metódusa.
indexe() public final int indexOf(java.lang.Object value) A megadott részkarakterlánc első előfordulásának indexét adja vissza ebben a karakterláncban.
iterátor() nyilvános végleges java.util.Iterator iterator() Egy iterátort ad vissza a sor elemei felett, megfelelő sorrendben.
lastIndexOf() public final int lastIndexOf(java.lang.Object value) A megadott részkarakterlánc utolsó előfordulásának indexét adja vissza ebben a karakterláncban.
toArray() nyilvános végleges java.lang.Object[] toArray() A tuple-t tömbbé alakítja.
toString() nyilvános végleges java.lang.String toString() Az objektum karakterlánc reprezentációját adja vissza. Felülbírálja az Object osztály toString() metódusát.
listázni() nyilvános végleges java.util.List toList() A tuple-t listává alakítja.

Közvetlen ismert alosztályok

Tuple mérete Tuple osztály neve Példa
Egy elem Mértékegység Mértékegység
Két elem Pár Pár
Három elem Hármas Hármas
Négy elem Kvartett Kvartett
Öt elem Ötös Ötös
Hat elem Szextett Szextett
Hét elem hét hét
Nyolc elem Oktett Oktett
Kilenc elem Ennead Ennead
Tíz elem Évtized Évtized

A fenti osztályokon kívül két további osztályt is biztosít a javatuples könyvtár, azaz. Kulcs érték és LabelValue . Ez a két osztály hasonló a Pár osztályba, és ugyanazt a funkcionalitást biztosítják, de eltérő szemantikában.

Minden tuple osztály a következő három interfészt valósítja meg:

  • Iterálható
  • Hasonló
  • Sorozatozható

A Tuple megvalósítása

A tuple implementálása Java nyelven nagyon egyszerű. Létre kell hoznunk egy példányt a tuple osztályból, amely megfelel a méretnek.

TuplePélda.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); } } 

Kimenet:

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

Tuple műveletek

A következő műveletek hajthatók végre egy soron:

  • Tuple létrehozása
  • Értékek megszerzése
  • Értékek beállítása
  • Elemek hozzáadása
  • Iterálj a Tuple felett
  • Konvertálja a Tuple-t listává
  • Keresés a Tuple-ben

Tuple létrehozása

Háromféleképpen hozhat létre sorokat:

  • A with() metódus használatával
  • A Constructor használatával
  • Gyűjtemény használatával

Lássuk a fenti három módszert egy sor létrehozására.

A with() metódus használatával

A javatuples könyvtár biztosítja a val vel() metódus, amely létrehoz egy tuple-t a megadott értékekkel. A módszer a org.javatuples.Pair csomag. Objektumok értékekkel történő példányosítására szolgál.

Szintaxis:

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

Példa:

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

A fenti Pair osztály objektum létrehoz egy tuple-t két értékkel. Ehhez készítsünk egy Java programot.

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); } } 

Kimenet:

java int karakterláncban
 [9086651, Dell Laptop] 

A Constructor használatával

Ebben az esetben igény szerint elkészítjük az osztály konstruktorát.

Szintaxis:

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

Példa:

 Quintet quintet = new Quintet (91237, 'Mac Book Air', 88490.00, '8-Core CPU', 4); 

Hozzunk létre egy Java programot, hogy létrehozzunk egy tuple-t a konstruktor segítségével.

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); } } 

Kimenet:

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

Gyűjtemény használatával

A javatuples könyvtár lehetővé teszi, hogy a gyűjteményből egy leírót hozzunk létre a fromCollection() módszer. Lehetővé teszi azt is, hogy egy tömbből leírót hozzunk létre a fromArray() módszer. Ne feledje, hogy a gyűjteménynek/tömbnek meg kell egyeznie a sor típusával és értékeivel.

A gyűjteménynek/tömbnek meg kell egyeznie a Tuple típusával, és a gyűjteményben/tömbben lévő értékek számának meg kell egyeznie a Tuple osztályával.

Szintaxis:

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

Példa:

 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); } } 

Kimenet:

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

Szerezzen értékeket

A javatuples könyvtár azt is lehetővé teszi számunkra, hogy a megadott indexen lévő leíróból értékeket gyűjtsünk be a segítségével getValueX() módszer. Ahol X az objektum indexértékét jelöli. Az indexelés 0-tól kezdődik.

Példa:

 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()); } } 

Kimenet:

 [Andrew] 

Állítsa be az értékeket

Ahogy fentebb tárgyaltuk, a sorok megváltoztathatatlanok. Ezért létrehozásuk után nem módosíthatók. A probléma megoldása érdekében a javatuples könyvtár biztosítja a setValueX() módszer. Ahol X az az indexérték, amelynél az adott értéket be akarjuk állítani. A metódus létrehozza a leíró másolatát az újonnan hozzáadott értékkel a megadott indexen, és ugyanazt a leírót adja vissza.

Példa:

 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); } } 

Kimenet:

elnevezési konvenció a java számára
 [67, 68] 

Érték hozzáadása

Kétféleképpen adhat hozzá értékeket egy sorhoz:

  • A sor végén
  • Egy adott indexen

A Tuple végén

A javatuples könyvtár biztosítja a add() metódus objektumok hozzáadásához a leíróhoz. Hozzáadja az objektumot a sor végéhez, és az elemek számának megfeleltetésével egy új sort ad vissza.

Tegyük fel, hogy van egy két elemű sorunk, és egy másik elemet szeretnénk hozzáadni a sorhoz. Ilyen esetben a pár sor nem támogatja a harmadik elemet. Ezért, ha egy elemet adunk egy pár sorhoz, az egy hármas sorrá alakul át. Lássunk egy példát.

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); } } 

Kimenet:

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

Hozzáadhatunk egy sort egy másik sorhoz is. Növeli az elemek számát az újonnan generált sorban. Ezért az összeadás után jelenlévő elemek száma alapján adja vissza a sor típusát.

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); } } 

Kimenet:

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

A megadott indexen

Alapértelmezés szerint az új elemek a sor végére kerülnek hozzáadásra. De a megadott indexhez hozzáadhatunk elemeket a addX() módszer.

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); } } 

Kimenet:

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

Elem keresése

Kereshetünk olyan elemet is, amely a sorban található. A javatuples könyvtár a kereséshez biztosítja a tartalmazza () a Tuple osztály metódusa. Logikai értéket ad vissza igaz ha egy elem jelen van, az else visszatér hamis . Lássunk egy példát.

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); } } 

Kimenet:

 true false 

Konvertálja a Tuple-t gyűjteménybe vagy tömbbe

Minden sorosztály rendelkezik asList() és toArray() metódusokkal, amelyek a List-et és az Array-t adják vissza. Lássunk egy példát.

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)); } } 

Kimenet:

 [Dog, 12, German Shepherd, 23.89] [Dog, 12, German Shepherd, 23.89] 

Vegye figyelembe, hogy a sor heterogén típusokat tartalmazhat, így a kapott típus a következő lesz Lista vagy Tárgy[] Eszerint.

Iteráció Tuple felett

Az összes tuple osztály megvalósítja a Iterálható felület. Tehát ugyanúgy iterálhatunk egy sort, mint a gyűjteményeket vagy a tömböket.

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); } } } 

Kimenet:

 Dell 5600.0 34 Digital Solutions 

Tuple vs. Lista/tömb

Java Tuple
Tuple Lista
Ez vesszővel elválasztott értékek halmaza, amelyek közé vannak zárva zárójel . Ez vesszővel elválasztott értékek halmaza, amelyek közé vannak zárva szögletes zárójelek .
A zárójel az választható . Szögletes zárójelek vannak kötelező .
Ez változhatatlan . Ez változékony .
Szükséges hozzá Kevésbé memória. Több memóriát igényel.
Megvan kevesebb gyári módszerek. Megvan több gyári módszerek.
Van egy rögzített hossz. Megvan változó hosszak.
Ez tárolja heterogén adat. Ez tárolja homogén adat.
Arra alkalmas nagy adatmennyiségeket. Alkalmas a kicsi adatmennyiség.
Tárolható a lista . Belül tárolható a tuple .
Ez gyorsabban Listához képest. Ez lassabb a sorhoz képest.
Úgy van ábrázolva, mint t1 = (1, 2, 3, 4, 5) Úgy van ábrázolva, mint l1 = [1, 2, 3, 4, 5]