logo

Java Tuple

A kortele yra duomenų struktūra, kurioje gali būti įvairių tipų objektai. Šie objektai nėra susiję vienas su kitu, bet turi prasmę, kai vertiname juos kartu. Šiame skyriuje aptariame kas yra tuple , savybės, dydis, ir operacijos kortelių. Taip pat aptarsime tuple diegimas Java .

Kas yra kortelė?

Apskritai, a kortele yra sutvarkyta objektų kolekcija. Stulpelyje duomenys saugomi kaip objektas atskirame baitų masyve. Jame kableliais atskirtos reikšmės yra laužtiniuose skliaustuose []. Tupelės yra nekintantis, skirtingai nei sąrašų duomenų struktūra. Kortelėje gali būti kelios eilutės. Jis taip pat gali būti laikomas anoniminiu objektu.

„Tuple“ savybės

„Tuple“ turi šias funkcijas:

  • tai yra saugus tipams, kartojamas, nekintamas, ir serializuoti .
  • Jis įgyvendina toString(), lygu(), ir maišos kodas ()
  • Taip pat įgyvendinama Palyginamas (Palyginami kelių padargai)

Tuple pavyzdys

Panagrinėkime toliau pateiktą pavyzdį.

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

Aukščiau pateikta eilutė yra a kvartetas kortele, nes turi keturi elementai (objektai). Pastebime, kad kiekvienas objektas yra skirtingo tipo. Bet kai mes tai vertiname bendrai, tai turi specifinę prasmę. Aukščiau pateikta eilutė nurodo darbuotojo duomenis, tokius kaip vardas, lytis, amžius ir paskirtis.

Pažiūrėkime keletą kitų kortelių pavyzdžių.

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

Tuple Java

Java programoje sekėjas yra bendra duomenų struktūra, kuri kiekvieną elementą traktuoja kaip objektą, o šie objektai saugomi atskirame baitų masyve. Kitaip tariant, taip pat galime sakyti, kad korta yra an užsakyta įvairių tipų objektų kolekcija.

Kortelės funkcionalumą galima įgyvendinti naudojant sąrašo ir masyvo duomenų struktūrą, tačiau šiose duomenų struktūrose nėra skirtingų tipų duomenų tipų. Vadinasi, aišku, kad nevienalytis kortele naudojant standartinę duomenų struktūrą (sąrašas/masyvas) negalima naudoti Java. Kadangi reikalavome kortele duomenų struktūra, kad atitiktų laikymo reikalavimą vienalytis duomenų struktūra.

Prisimink tai Kortelės duomenų struktūros nėra Java programavime , pagal numatytuosius nustatymus. Bet mes galime įdiegti rinkinio duomenų struktūrą naudodami trečiosios šalies biblioteką, pavadintą javatuples .

Prieš pereidami prie diegimo, pirmiausia atsisiųsime javatuples.jar failą. Ir pridėkite šį failą prie projekto kelio.

sąrašas java

Taip pat galime naudoti šią priklausomybę pom.xml failą, kad įdiegtumėte kortelių duomenų struktūrą Java.

 org.javatuples javatuples 1.2 

Įdiegkime kortelę ir sukurkime paprastą Java kortelių programą.

Javatuples biblioteka

The javatuples biblioteka turi eilučių klases, atitinkančias eilės dydį. Dydžiai gali būti skirtingo dydžio. Kortelėje gali būti daugiausia 10 elementai. Kiekvienos eilutės įgyvendinimas yra skirtingas. Klasių hierarchija yra tokia.

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

Java Tuple Class

The Tuple yra abstrakti bazinė klasė visoms kortelių klasėms, kurioms priklauso org.javatuples paketą. Visi kortelių klasės metodai yra vieši ir galutiniai. Toliau pateiktoje lentelėje apibendrinami sekėjų klasės metodai. Tai įgyvendina Iterable ir Serializable sąsajas.

Metodas Sintaksė apibūdinimas
yra () vieša galutinė loginė reikšmė (java.lang.Object value) Jis patikrina, ar sekoje yra konkretus elementas, ar ne.
yra viskas () vieša galutinė loginė vertė apima viską (java.util.Collection kolekcija) Jis grąžina teisingą, jei šioje sekoje yra visi nurodytos kolekcijos elementai (sąrašas / masyvas).
lygus () vieša galutinė loginė vertė (java.lang.Object obj) Nepaiso lygus () Objektų klasės metodas.
getSize () vieša santrauka int getSize() Tai grąžina eilės dydį.
getValue() viešas galutinis java.lang.Object getValue(int pos) Gaukite vertę konkrečioje eilutės vietoje. Šis metodas turi grąžinti objektą, todėl jį naudodami prarasite tipo saugumą, kurį gaunate su getValueX() metodus.
maišos kodas () viešas galutinis int maišos kodas() Jis grąžina eilutės maišos kodą. Jis nepaiso maišos kodas () Objektų klasės metodas.
indexOf() viešas galutinis int indexOf(java.lang.Object value) Ji grąžina indeksą šioje eilutėje, pirmą kartą pasirodžiusi nurodytai poeiliui.
iteratorius () viešas galutinis java.util.Iterator iterator() Jis grąžina iteratorių per šios eilės elementus tinkama seka.
LastIndexOf() viešas galutinis int lastIndexOf(java.lang.Object value) Jis grąžina paskutinės nurodytos poeilės pasireiškimo indeksą šioje eilutėje.
toArray () viešas galutinis java.lang.Object[] toArray() Jis paverčia seką į masyvą.
toString() viešas galutinis java.lang.String toString() Tai grąžina objekto eilutės atvaizdavimą. Nepaiso objektų klasės metodo toString().
išvardinti() viešas galutinis java.util.List toList() Jis konvertuoja seką į sąrašą.

Tiesiogiai žinomi poklasiai

Tuple dydis Tuple klasės pavadinimas Pavyzdys
Vienas elementas Vienetas Vienetas
Du elementai Pora Pora
Trys elementai Trijulė Trijulė
Keturi elementai Kvartetas Kvartetas
Penki elementai Kvintetas Kvintetas
Šeši elementai Sekstetas Sekstetas
Septyni elementai septyni septyni
Aštuoni elementai oktetas oktetas
Devyni elementai Enneadas Enneadas
Dešimt elementų Dešimtmetis Dešimtmetis

Be minėtų klasių, javatuples bibliotekos siūlo dvi papildomas klases, t.y. KeyValue ir LabelValue . Šios dvi klasės yra panašios į Pora klasė ir teikia tas pačias funkcijas, bet skirtinga semantika.

Kiekviena eilutės klasė įgyvendina šias tris sąsajas:

  • Pakartojama
  • Palyginamas
  • Serializuojama

„Tuple“ įgyvendinimas

„Java“ eilutės diegimas yra labai paprastas. Turime sukurti kortelių klasės egzempliorių, atitinkantį dydį.

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

Išvestis:

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

Kortelės operacijos

Su kortele galima atlikti šias operacijas:

  • Kortelės kūrimas
  • Vertybių gavimas
  • Vertybių nustatymas
  • Elementų pridėjimas
  • Pakartokite per Tuple
  • Konvertuoti tuple į sąrašą
  • Ieškoma Tuple

„Tuple“ kūrimas

Yra trys seką sukurti būdai:

  • Naudojant with() metodą
  • Naudojant konstruktorių
  • Naudodami kolekciją

Pažiūrėkime aukščiau nurodytus tris būdus, kaip sukurti seką.

Naudojant with() metodą

„Javatuples“ biblioteka suteikia su() metodas, kuris sukuria seką su nurodytomis reikšmėmis. Metodas priklauso org.javatuples.Pair paketą. Jis naudojamas objektų egzistavimui su reikšmėmis.

Sintaksė:

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

Pavyzdys:

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

Aukščiau pateiktas poros klasės objektas sukuria seką su dviem reikšmėmis. Tam sukurkime Java programą.

SukurtiTupleExample1.java

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

Išvestis:

 [9086651, Dell Laptop] 

Naudojant konstruktorių

Tokiu atveju pagal poreikį sukuriame klasės konstruktorių.

Sintaksė:

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

Pavyzdys:

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

Sukurkime Java programą, kad sukurtume seką naudodami konstruktorių.

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

Išvestis:

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

Naudodami kolekciją

„Javatuples“ biblioteka leidžia mums sukurti seką iš kolekcijos naudojant iš kolekcijos () metodas. Tai taip pat leidžia mums sukurti seką iš masyvo naudojant fromArray() metodas. Atkreipkite dėmesį, kad rinkinio / masyvo tipas ir reikšmės turi būti tokios pat kaip ir kortelės.

Kolekcija / masyvas turi būti tokio paties tipo kaip ir kortele, o rinkinio / masyvo reikšmių skaičius turi atitikti 'Tuple' klasę.

Sintaksė:

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

Pavyzdys:

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

Išvestis:

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

Gaukite vertybes

„Javatuples“ biblioteka taip pat leidžia mums gauti reikšmes iš eilutės nurodyto indekso, naudojant getValueX() metodas. Kur X žymi objekto indekso reikšmę. Indeksavimas prasideda nuo 0.

Pavyzdys:

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

Išvestis:

 [Andrew] 

Nustatykite vertes

Kaip aptarėme aukščiau, kortelės yra nekintančios. Taigi, jų negalima keisti, kai jie yra sukurti. Norėdami išspręsti problemą, javatuples biblioteka suteikia setValueX() metodas. Kur X yra indekso reikšmė, pagal kurią norime nustatyti konkrečią vertę. Metodas sukuria sektos kopiją su naujai pridėta verte nurodytame indekse ir grąžina tą pačią seką.

Pavyzdys:

"masono formulė"
 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); } } 

Išvestis:

 [67, 68] 

Vertės pridėjimas

Yra du būdai pridėti vertes į seką:

  • Eilės gale
  • Tam tikrame indekse

„Tuple“ pabaigoje

„Javatuples“ biblioteka suteikia papildyti() būdas įtraukti objektus į seką. Ji prideda objektą eilutės pabaigoje ir grąžina naują seką, suderindama elementų skaičių.

Tarkime, kad turime seką, turinčią du elementus, ir norime pridėti kitą elementą. Tokiu atveju poros eilutė nepalaikys trečiojo elemento. Todėl, kai pridedame elementą į poros eilutę, jis paverčiamas trigubo kortele. Pažiūrėkime pavyzdį.

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

Išvestis:

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

Taip pat galime pridėti vieną eilutę prie kitos. Tai padidina elementų skaičių naujai sugeneruotoje eilutėje. Taigi, jis grąžina eilės tipą pagal elementų skaičių po pridėjimo.

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

Išvestis:

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

Nurodytame indekse

Pagal numatytuosius nustatymus nauji elementai pridedami eilutės pabaigoje. Bet mes galime įtraukti elementus į nurodytą indeksą naudodami addX() metodas.

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

Išvestis:

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

Elemento paieška

Taip pat galime ieškoti elemento, esančio sekoje. Norint ieškoti javatuples bibliotekoje, pateikiama yra () Tuple klasės metodas. Jis grąžina Būlio reikšmę tiesa jei elementas yra, kitaip grįžta klaidinga . Pažiūrėkime pavyzdį.

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

Išvestis:

 true false 

Konvertuokite „Tuple“ į kolekciją arba masyvą

Kiekviena eilutė turi asList() ir toArray() metodus, kurie atitinkamai grąžina sąrašą ir masyvą. Pažiūrėkime pavyzdį.

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

Išvestis:

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

Atminkite, kad eilutėje gali būti nevienalyčių tipų, todėl gautas tipas bus iš Sąrašas arba Objektas[] atitinkamai.

makiažo produktų pavadinimas

Iteracija per tuple

Visos kortelių klasės įgyvendina Pakartojama sąsaja. Taigi, seką galime kartoti taip pat, kaip kolekcijas ar masyvus.

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

Išvestis:

 Dell 5600.0 34 Digital Solutions 

Tuple Vs. Sąrašas / masyvas

Java Tuple
Tuple Sąrašas
Tai yra kableliais atskirtų reikšmių rinkinys, įtrauktas į jį skliausteliuose . Tai yra kableliais atskirtų reikšmių rinkinys, įtrauktas į jį laužtiniai skliaustai .
Skliausteliuose yra neprivaloma . Kvadratiniai skliaustai yra privalomas .
tai yra nekintamas . tai yra kintamas .
Tai reikalauja mažiau atmintis. Tam reikia daugiau atminties.
Tai turi mažiau gamykliniai metodai. Tai turi daugiau gamykliniai metodai.
Tai turi fiksuotas ilgio. Tai turi kintamasis ilgiai.
Jis saugo nevienalytis duomenis. Jis saugo vienalytis duomenis.
Jis tinka didelis duomenų kiekius. Jis tinka a mažas duomenų kiekis.
Jį galima laikyti a sąrašą . Jį galima laikyti viduje a kortele .
tai yra greičiau palyginti su sąrašu. tai yra lėčiau lyginant su kortele.
Jis vaizduojamas kaip t1 = (1, 2, 3, 4, 5) Jis vaizduojamas kaip l1 = [1, 2, 3, 4, 5]