logo

Java Tuple

A korts ir datu struktūra, kurā var būt dažāda veida objekti. Šie objekti nav saistīti viens ar otru, bet tiem ir nozīme, aplūkojot tos kopā. Šajā sadaļā mēs apspriežam kas ir tuple , īpašības, izmērs, un operācijas no kortežiem. Tāpat mēs apspriedīsim tuple ieviešana Java .

Kas ir tuple?

Kopumā a korts ir sakārtota objektu kolekcija. Korejā dati tiek glabāti kā objekts atsevišķā baitu masīvā. Tam ir ar komatu atdalītas vērtības, kas ir ievietotas kvadrātiekavās []. Korpusi ir nemainīgs, atšķirībā no sarakstu datu struktūras. Kortežā var ietilpt vairāki korteži. To var uzskatīt arī par anonīmu objektu.

Tuple iezīmes

Tuple ir šādas funkcijas:

  • Tas ir tipa drošs, atkārtojams, nemainīgs, un serializējams .
  • Tas īsteno toString(), ir vienāds(), un hashCode ()
  • Tas arī īsteno Salīdzināms (Tuple agregāti salīdzināmi)

Korpusa piemērs

Apskatīsim šādu piemēru.

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

Iepriekš minētais kortežs ir a kvartets tuple, jo tā ir četri elementi (objekti). Mēs novērojam, ka katrs objekts ir dažāda veida. Bet, ja mēs to aplūkojam kolektīvi, tam ir īpaša nozīme. Iepriekš redzamā virkne attēlo darbinieka datus, piemēram, vārdu, dzimumu, vecumu un apzīmējumu.

Apskatīsim dažus citus korešu piemērus.

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

Tuple Java valodā

Java valodā kortežs ir vispārīga datu struktūra, kas katru elementu uzskata par objektu, un šie objekti tiek glabāti atsevišķā baitu masīvā. Citiem vārdiem sakot, mēs varam arī teikt, ka tuple ir an pasūtīts dažāda veida priekšmetu kolekcija.

Korejas funkcionalitāti var ieviest, izmantojot datu struktūru sarakstu un masīvu, taču šajās datu struktūrās pēc konstrukcijas nav dažādu veidu datu tipi. Līdz ar to ir skaidrs, ka neviendabīgs Koreja, izmantojot standarta datu struktūru (saraksts/masīvs), nav iespējama Java. Tā kā mēs prasījām korts datu struktūra, lai izpildītu turēšanas prasību viendabīgs datu struktūra.

Pieraksti to Korpusa datu struktūra Java programmēšanā nepastāv , pēc noklusējuma. Bet mēs varam ieviest korespondences datu struktūru, izmantojot nosaukto trešās puses bibliotēku javatuples .

Pirms pāriet uz ieviešanu, mēs vispirms lejupielādēsim javatuples.jar failu. Un pievienojiet šo failu projekta ceļam.

Mēs varam izmantot arī šādu atkarību pom.xml failu, lai ieviestu korešu datu struktūru Java.

 org.javatuples javatuples 1.2 

Ieviesīsim korešu un izveidosim vienkāršu Java korešu programmu.

Javatuples bibliotēka

The javatuples bibliotēkā ir korešu klases, kas atbilst koretūras lielumam. Tuples var būt dažāda izmēra. Korpusā var ietilpt ne vairāk kā 10 elementi. Katra kortedža īstenošana ir atšķirīga. Klases hierarhija ir šāda.

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

Java Tuple Class

The Tuple ir abstrakta bāzes klase visām tuple klasēm, kas pieder org.javatuples iepakojums. Visas tuple klases metodes ir publiskas un galīgas. Nākamajā tabulā ir apkopotas korešu klases metodes. Tas ievieš Iterable un Serializable saskarnes.

Metode Sintakse Apraksts
satur () publiska galīgā Būla vērtība (java.lang.Object value) Tas pārbauda, ​​vai kortejā ir konkrēts elements vai nav.
satur visu() publiska galīgā Būla vērtība saturVisu(java.util.Collection kolekcija) Tas atgriež patiesu, ja šajā kortežā ir visi norādītās kolekcijas (saraksta/masīva) elementi.
vienāds () publiska galīgā Būla vērtība ir vienāda (java.lang.Object obj) Ignorē vienāds () Objektu klases metode.
getSize() publisks abstrakts int getSize() Tas atgriež korektora lielumu.
getValue() publiskais galīgais java.lang.Object getValue(int pos) Iegūstiet vērtību noteiktā virknes pozīcijā. Šai metodei ir jāatgriež objekts, tāpēc, izmantojot to, jūs zaudēsit tipa drošību, ko iegūstat ar getValueX() metodes.
hashCode() publisks galīgais int hashCode() Tas atgriež virknes jaucējkodu. Tas ignorē hashCode() Objektu klases metode.
indexOf() public final int indexOf(java.lang.Object value) Tas atgriež indeksu šajā virknē, kas norādīts norādītās apakšvirknes pirmo reizi.
iterators () publiskais galīgais java.util.Iterator iterator() Tas atgriež iteratoru virs elementiem šajā kortejā pareizā secībā.
LastIndexOf() public final int lastIndexOf(java.lang.Object value) Tas atgriež indeksu šajā virknē pēdējā norādītās apakšvirknes gadījumā.
toArray() publiskais galīgais java.lang.Object[] toArray() Tas pārvērš korešu masīvā.
toString() publiskais galīgais java.lang.String toString() Tas atgriež objekta virknes attēlojumu. Ignorē klases Object metodi toString().
uzskaitīt() publiskais galīgais java.util.List toList() Tas pārveido korešu sarakstu.

Tiešās zināmās apakšklases

Tuple izmērs Tuple klases nosaukums Piemērs
Viens elements Vienība Vienība
Divi elementi Pāris Pāris
Trīs elementi Trīskāršs Trīskāršs
Četri elementi Kvartets Kvartets
Pieci elementi Kvintets Kvintets
Seši elementi Sekstets Sekstets
Septiņi elementi septiņi septiņi
Astoņi elementi Oktets Oktets
Deviņi elementi Enneāde Enneāde
Desmit elementi Desmitgade Desmitgade

Papildus iepriekšminētajām klasēm javatuples bibliotēka nodrošina divas papildu nodarbības, t.i. KeyValue un LabelValue . Šīs divas klases ir līdzīgas Pāris klasē un nodrošina to pašu funkcionalitāti, bet atšķirīgā semantikā.

Katra korešu klase ievieš šādas trīs saskarnes:

  • Atkārtojams
  • Salīdzināms
  • Serializējams

Tuple ieviešana

Korpusa ieviešana Java ir ļoti vienkārša. Mums ir jāizveido Korejas klases gadījums, kas atbilst izmēram.

alfabēts ar cipariem

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

Izvade:

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

Korpusa operācijas

Korejā var veikt šādas darbības:

  • Tuple izveide
  • Vērtību iegūšana
  • Vērtību iestatīšana
  • Elementu pievienošana
  • Atkārtojiet pār Tuple
  • Pārvērst Tuple par sarakstu
  • Meklē Tuple

Tuple izveide

Ir trīs veidi, kā izveidot kopu:

  • Izmantojot ar () metodi
  • Izmantojot konstruktoru
  • Izmantojot kolekciju

Apskatīsim iepriekš minētos trīs veidus, kā izveidot korteži.

Izmantojot ar () metodi

Javauples bibliotēka nodrošina ar () metode, kas izveido korteju ar norādītajām vērtībām. Metode pieder pie org.javatuples.Pair iepakojums. To izmanto, lai radītu objektus ar vērtībām.

Sintakse:

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

Piemērs:

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

Iepriekš minētais Pair klases objekts izveido korteži ar divām vērtībām. Izveidosim Java programmu tam pašam.

IzveidotTupleExample1.java

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

Izvade:

 [9086651, Dell Laptop] 

Izmantojot konstruktoru

Šajā gadījumā mēs izveidojam klases konstruktoru atbilstoši prasībām.

Sintakse:

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

Piemērs:

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

Izveidosim Java programmu, lai izveidotu korešu, izmantojot konstruktoru.

šķirošanas kaudze

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

Izvade:

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

Izmantojot kolekciju

Javatuples bibliotēka ļauj mums izveidot kopu no kolekcijas, izmantojot no kolekcijas() metodi. Tas arī ļauj mums izveidot kopu no masīva, izmantojot fromArray() metodi. Ņemiet vērā, ka kolekcijai/masīvam ir jābūt tādam pašam tipam un vērtībām kā kortežam.

Kolekcijai/masīvam ir jābūt tādam pašam tipam kā Koreja, un vērtību skaitam kolekcijā/masīvā ir jāatbilst Korejas klasei.

Sintakse:

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

Piemērs:

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

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

Izvade:

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

Iegūstiet vērtības

Javatuples bibliotēka arī ļauj mums iegūt vērtības no kortedža norādītajā indeksā, izmantojot getValueX() metodi. Kur X apzīmē objekta indeksa vērtību. Indeksēšana sākas no 0.

Piemērs:

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

Izvade:

 [Andrew] 

Iestatiet vērtības

Kā mēs runājām iepriekš, korteži ir nemainīgi. Tādējādi tos nevar modificēt, kad tie ir izveidoti. Lai pārvarētu problēmu, javatuples bibliotēka nodrošina setValueX() metodi. Kur X ir indeksa vērtība, pie kuras mēs vēlamies iestatīt konkrēto vērtību. Metode izveido kortedža kopiju ar tikko pievienoto vērtību norādītajā indeksā un atgriež to pašu kortei.

Piemērs:

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

Izvade:

 [67, 68] 

Vērtības pievienošana

Ir divi veidi, kā virknē pievienot vērtības:

unix vs Windows
  • Korpusa beigās
  • Konkrētā indeksā

Tuple beigās

Javauples bibliotēka nodrošina pievienot () metode objektu pievienošanai kortei. Tā pievieno objektu kortedža beigās un atgriež jaunu virkni, saskaņojot ar elementu skaitu.

Pieņemsim, ka mums ir kortežs ar diviem elementiem, un mēs vēlamies pievienot kortei vēl vienu elementu. Šādā gadījumā pāra kortežs neatbalstīs trešo elementu. Tāpēc, kad mēs pievienojam elementu pāra kortei, tas tiek pārveidots par trīskāršu virkni. Apskatīsim piemēru.

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

Izvade:

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

Mēs varam arī pievienot vienu virkni citai virknei. Tas palielina elementu skaitu jaunģenerētajā virknējumā. Tādējādi tas atgriež kortedža veidu, pamatojoties uz pēc pievienošanas esošo elementu skaitu.

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

Izvade:

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

Pie norādītā indeksa

Pēc noklusējuma jauni elementi tiek pievienoti kortedža beigās. Bet mēs varam pievienot elementus norādītajā indeksā, izmantojot addX() metodi.

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

Izvade:

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

Elementa meklēšana

Mēs varam arī meklēt elementu, kas atrodas kortežā. Meklēšanai javatuples bibliotēka nodrošina satur () Tuple klases metode. Tas atgriež Būla vērtību taisnība ja elements ir klāt, cits atgriežas viltus . Apskatīsim piemēru.

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

Izvade:

 true false 

Konvertējiet Tuple par kolekciju vai masīvu

Katrai korektora klasei ir metodes asList() un toArray(), kas atgriež attiecīgi sarakstu un masīvu. Apskatīsim piemēru.

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

Izvade:

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

Ņemiet vērā, ka kortežā var būt neviendabīgi tipi, tāpēc iegūtais tips būs no Saraksts vai Objekts[] attiecīgi.

Iterācija virs Tuple

Visas tuple klases īsteno Atkārtojams saskarne. Tātad, mēs varam atkārtot korektoru tāpat kā kolekcijas vai masīvus.

minimālais algoritms

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

Izvade:

 Dell 5600.0 34 Digital Solutions 

Tuple Vs. Saraksts/masīvs

Java Tuple
Tuple Saraksts
Tā ir ar komatu atdalītu vērtību kopa, kas ir ietverta iekavās . Tā ir ar komatu atdalītu vērtību kopa, kas ir ietverta kvadrātiekavās .
Iekavas ir neobligāti . Kvadrātiekavas ir obligāts .
Tas ir nemainīgs . Tas ir mainīgs .
Tas prasa mazāk atmiņa. Tas prasa vairāk atmiņas.
Tā ir mazāk rūpnīcas metodes. Tā ir vairāk rūpnīcas metodes.
Tam ir a fiksēts garums. Tā ir mainīgs garumi.
Tas uzglabā neviendabīgs datus. Tas uzglabā viendabīgs datus.
Tas ir piemērots liels datu apjomu. Tas ir piemērots a mazs datu apjoms.
To var uzglabāt a sarakstu . To var uzglabāt iekšā a korts .
Tas ir ātrāk salīdzinot ar sarakstu. Tas ir lēnāk salīdzinot ar korteci.
Tas ir attēlots kā t1 = (1, 2, 3, 4, 5) Tas ir attēlots kā l1 = [1, 2, 3, 4, 5]