logo

Java Tuple

EN tuppel er en datastruktur som kan inneholde objekter av forskjellige typer. Disse objektene er ikke knyttet til hverandre, men har betydning når vi vurderer dem samlet. I denne delen diskuterer vi hva er tupel , funksjoner, størrelse, og operasjoner av tuppel. Vi vil også diskutere tuppelimplementering i Java .

Hva er en tuppel?

Generelt, a tuppel er en ordnet samling av gjenstander. I tuple lagres data som et objekt i en separat byte-array. Den har kommadelte verdier omsluttet av et par firkantede parenteser []. Tuples er uforanderlig, i motsetning til Lists datastruktur. En tuppel kan inneholde flere tupler. Det kan også betraktes som et anonymt objekt.

Egenskaper til Tuple

Tuple har følgende funksjoner:

  • Det er typesikker, gjentakelig, uforanderlig, og serialiserbar .
  • Den implementerer toString(), lik(), og hashkoden()
  • Den implementerer også Sammenlignbar (Sammenlignbare redskaper)

Tuppel eksempel

La oss vurdere følgende eksempel.

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

Ovennevnte tuppel er en kvartett tuple fordi den har fire elementer (objekter). Vi observerer at hvert objekt er av en annen type. Men når vi vurderer det samlet, har det en bestemt betydning. Ovennevnte tuppel representerer dataene til en ansatt som navn, kjønn, alder og betegnelse.

La oss se noen andre eksempler på tupler.

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

Tuple i Java

I Java er en tuppel en generisk datastruktur som behandler hvert element som et objekt, og disse objektene lagres i en separat byte-array. Med andre ord kan vi også si at tuppel er en bestilt samling av gjenstander av ulike typer.

Funksjonaliteten til en tuppel kan implementeres ved hjelp av List- og Array-datastrukturen, men disse datastrukturene inneholder ikke forskjellige typer datatyper etter design. Derfor er det klart at heterogen tuple ved å bruke en standard datastruktur (List/ Array) er ikke mulig i Java. Siden vi krevde tuppel datastruktur for å oppfylle kravet om beholdning homogen data struktur.

Noter det tuppeldatastruktur er ikke til stede i Java-programmering , som standard. Men vi kan implementere tuppeldatastrukturen ved å bruke tredjepartsbiblioteket som heter javatuples .

Før vi går til implementeringen, vil vi først laste ned javatuples.jar fil. Og legg til denne filen i banen til prosjektet.

Vi kan også bruke følgende avhengighet i pom.xml fil for å implementere tuples datastruktur i Java.

 org.javatuples javatuples 1.2 

La oss implementere en tuppel og lage et enkelt Java-tuppelprogram.

Javatuples bibliotek

De javatuples biblioteket har tuppelklassene som tilsvarer størrelsen på en tuppel. Tupler kan være forskjellige i størrelse. En tuppel kan inneholde maksimalt 10 elementer. Gjennomføringen av hver tuppel er forskjellig. Klassehierarkiet er som følger.

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

Java Tuple klasse

De Tuppel er en abstrakt grunnklasse for alle tuppelklassene som hører til org.javatuples pakke. Alle metodene i tuppelklassen er offentlige og endelige. Følgende tabell oppsummerer metodene for tuppelklassen. Den implementerer Iterable og Serialiserbare grensesnitt.

Metode Syntaks Beskrivelse
inneholder() public final boolean contains(java.lang.Object value) Den sjekker om tuppelen har et bestemt element eller ikke.
inneholder alle() public final boolean containsAll(java.util.Collection collection) Den returnerer sann hvis denne tuppelen inneholder alle elementene i den angitte samlingen (List/Array).
er lik() offentlig endelig boolsk lik(java.lang.Object obj) Overstyrer er lik() metoden til Object-klassen.
getSize() offentlig abstrakt int getSize() Det returnerer størrelsen på tuppel.
getValue() public final java.lang.Object getValue(int pos) Få verdien ved en bestemt posisjon i tupelen. Denne metoden må returnere objekt, så ved å bruke den vil du miste typesikkerheten du får med getValueX() metoder.
hashkode() offentlig endelig int hashCode() Den returnerer en hash-kode for strengen. Den overstyrer hashkode() metoden til Object-klassen.
oversikt over() public final int indexOf(java.lang.Object value) Den returnerer indeksen innenfor denne strengen for den første forekomsten av den angitte delstrengen.
iterator() public final java.util.Iterator iterator() Den returnerer en iterator over elementene i denne tuppelen i riktig rekkefølge.
lastIndexOf() public final int lastIndexOf(java.lang.Object value) Den returnerer indeksen innenfor denne strengen for den siste forekomsten av den angitte delstrengen.
toArray() public final java.lang.Object[] toArray() Den konverterer tuppelen til en matrise.
toString() public final java.lang.String toString() Den returnerer en strengrepresentasjon av objektet. Overstyrer toString()-metoden til Object-klassen.
ramse opp() public final java.util.List toList() Den konverterer tuppelen til en liste.

Direkte kjente underklasser

Størrelse på Tuple Tuple klassenavn Eksempel
Ett element Enhet Enhet
To elementer Par Par
Tre elementer Triplett Triplett
Fire elementer Kvartett Kvartett
Fem elementer Kvintett Kvintett
Seks elementer Sekstett Sekstett
Syv elementer syv syv
Åtte elementer Oktett Oktett
Ni elementer Ennead Ennead
Ti elementer Tiår Tiår

I tillegg til de ovennevnte klassene, er det to ekstra klasser levert av javatuples-biblioteket, dvs. Nøkkelverdi og LabelValue . Disse to klassene ligner på Par klasse og gir samme funksjonalitet, men i forskjellig semantikk.

Hver tuppelklasse implementerer følgende tre grensesnitt:

  • Iterable
  • Sammenlignbar
  • Serialiserbar

Implementering av Tuple

Implementeringen av en tuppel i Java er veldig enkel. Vi må lage en forekomst av tuppelklasse som tilsvarer størrelsen.

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

Produksjon:

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

Tuple operasjoner

Følgende operasjoner kan utføres på en tuppel:

  • Opprette en Tuple
  • Få verdier
  • Stille inn verdier
  • Legge til elementer
  • Iterer over Tuple
  • Konverter Tuple til List
  • Søker i Tuple

Skaper Tuple

Det er tre måter å lage en tuppel på:

  • Ved å bruke with()-metoden
  • Ved å bruke Constructor
  • Ved å bruke samling

La oss se de tre ovennevnte måtene å lage en tuppel på.

Ved å bruke with()-metoden

Javatuples-biblioteket gir med() metode som lager en tuppel med de angitte verdiene. Metoden tilhører org.javatuples.Pair pakke. Den brukes til å instansiere objekter med verdier.

Syntaks:

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

Eksempel:

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

Ovennevnte Pair-klasseobjekt lager en tuppel med to verdier. La oss lage et Java-program for det samme.

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

Produksjon:

 [9086651, Dell Laptop] 

Ved å bruke Constructor

I dette tilfellet oppretter vi en konstruktør av klassen, i henhold til kravet.

Syntaks:

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

Eksempel:

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

La oss lage et Java-program for å lage en tuppel ved hjelp av konstruktør.

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

Produksjon:

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

Ved å bruke samling

Javatuples-biblioteket lar oss lage en tuppel fra samlingen ved å bruke fromCollection() metode. Det lar oss også lage en tuppel fra en matrise ved å bruke fromArray() metode. Merk at samlingen/matrisen må ha samme type og verdier som tuppelen.

Samlingen/matrisen må ha samme type som Tuple og antall verdier i samlingen/matrisen må samsvare med Tuple-klassen.

Syntaks:

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

Eksempel:

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

Produksjon:

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

Få verdier

Javatuples-biblioteket lar oss også hente verdier fra tuppelen ved den angitte indeksen ved å bruke getValueX() metode. Hvor X angir indeksverdien til objektet. Indeksering starter fra 0.

Eksempel:

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

Produksjon:

 [Andrew] 

Sett verdier

Som vi diskuterte ovenfor er tupler uforanderlige. Derfor kan de ikke endres når de først er opprettet. For å overvinne problemet tilbyr javatuples-biblioteket setValueX() metode. Hvor X er indeksverdien som vi ønsker å sette den spesifikke verdien til. Metoden lager en kopi av tuppelen med den nylig tilførte verdien ved den angitte indeksen og returnerer den samme tuppelen.

Eksempel:

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

Produksjon:

 [67, 68] 

Legge til en verdi

Det er to måter å legge til verdier i en tuppel:

  • På slutten av tuppelen
  • Ved spesifikk indeks

På slutten av Tuple

Javatuples-biblioteket gir Legg til() metode for å legge til objekter i tuppelen. Den legger til objektet på slutten av tuppelen og returnerer en ny tuppel ved å matche antall elementer.

Anta at vi har en tuppel som har to elementer og vi ønsker å legge til et annet element til tuppelen. I et slikt tilfelle vil ikke par-tuppelen støtte det tredje elementet. Derfor, når vi legger til et element til en par-tuppel, blir det konvertert til en trippel-tuppel. La oss se et eksempel.

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

Produksjon:

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

Vi kan også legge til en tuppel til en annen tuppel. Det øker antall elementer i den nylig genererte tuppelen. Derfor returnerer den typen tuppel basert på antall elementer som er tilstede etter addisjon.

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

Produksjon:

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

Ved spesifisert indeks

Som standard legges nye elementer til på slutten av tupelen. Men vi kan legge til elementer ved den angitte indeksen ved å bruke addX() metode.

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

Produksjon:

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

Søke etter et element

Vi kan også søke etter et element som ligger i tupelen. For å søke i javatuples gir biblioteket inneholder() metoden til Tuple-klassen. Den returnerer en boolsk verdi ekte hvis et element er tilstede, returnerer annet falsk . La oss se et eksempel.

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

Produksjon:

 true false 

Konverter Tuple til Collection eller Array

Hver tuppelklasse har metodene asList() og toArray() som returnerer henholdsvis List og Array. La oss se et eksempel.

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

Produksjon:

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

Merk at tuppel kan inneholde heterogene typer, så den resulterende typen vil være av Liste eller Gjenstand[] tilsvarende.

Iterasjon over Tuple

Alle tuppelklassene implementerer Iterable grensesnitt. Så vi kan iterere en tuppel på samme måte som samlinger eller matriser.

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

Produksjon:

 Dell 5600.0 34 Digital Solutions 

Tuple vs. Liste/Array

Java Tuple
Tuppel Liste
Det er et sett med kommaseparerte verdier som er omsluttet av parentes . Det er et sett med kommaseparerte verdier som er omsluttet av firkantede parenteser .
Parentes er valgfri . Firkantede parenteser er påbudt, bindende .
Det er uforanderlig . Det er foranderlig .
Det krever mindre hukommelse. Det krever mer minne.
Det har færre fabrikkmetoder. Det har mer fabrikkmetoder.
Den har en fikset lengde. Det har variabel lengder.
Den lagrer heterogen data. Den lagrer homogen data.
Den passer for stor mengder data. Den passer for en liten mengde data.
Den kan lagres i en liste . Den kan oppbevares inne i en tuppel .
Det er raskere i forhold til List. Det er langsommere i forhold til tuppelen.
Det er representert som t1 = (1, 2, 3, 4, 5) Det er representert som l1 = [1, 2, 3, 4, 5]