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
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] |