A tuple je struktura podataka koja može sadržavati objekte različitih tipova. Ovi objekti nisu povezani jedan s drugim, ali imaju značenje kada ih promatramo zajedno. U ovom odjeljku raspravljamo što je tuple , karakteristike, veličina, i operacije od tuples. Također, razgovarat ćemo o implementacija tuplea u Javi .
Što je tuple?
Općenito, a tuple je uređena zbirka objekata. Podaci u tupleu pohranjuju se kao objekt u zasebnom nizu bajtova. Ima vrijednosti odvojene zarezima unutar par uglatih zagrada []. Torke su nepromjenjiv, za razliku od strukture podataka Lists. Torka može sadržavati više torki. Može se smatrati i anonimnim objektom.
Značajke Tuplea
Tuple ima sljedeće značajke:
- to je siguran za tipove, iterable, nepromjenjiv, i koji se može serijalizirati .
- Provodi se toString(), jednako(), i hashCode()
- Također implementira Usporedivo (Torka implementira usporedivo)
Primjer tuple
Razmotrimo sljedeći primjer.
sortiranje umetanjem
['Sophia', 'Female', 22, 'Marketing Manager']
Gornja torka je a kvartet tuple jer ima četiri elementi (objekti). Primjećujemo da je svaki objekt različite vrste. Ali kada ga promatramo skupno, on ima specifično značenje. Gornja torka predstavlja podatke zaposlenika kao što su ime, spol, dob i naziv.
Pogledajmo još neke primjere torki.
['Java', 'Object-oriented', 14] ['John', 'Wick' 21, 'USA', false, '[email protected]'] [3, 'Samsung', 'Galaxy S2', 37000.00]
Tuple u Javi
U Javi, tuple je generička struktura podataka koja svaki element tretira kao objekt, a te objekte pohranjuje u zasebno polje bajtova. Drugim riječima, također možemo reći da je tuple an naredio zbirka predmeta različitih vrsta.
Funkcionalnost tuplea može se implementirati korištenjem podatkovne strukture List i Array, ali te podatkovne strukture ne sadrže različite vrste tipova podataka prema dizajnu. Stoga je jasno da heterogena tuple koji koristi standardnu strukturu podataka (List/Array) nije moguć u Javi. Budući da smo zahtijevali tuple struktura podataka kako bi se ispunio zahtjev držanja homogena struktura podataka.
Imajte na umu da struktura podataka tuple nije prisutna u Java programiranju , prema zadanim postavkama. Ali strukturu podataka tuple možemo implementirati korištenjem biblioteke treće strane pod nazivom javatuples .
Prije nego što prijeđemo na implementaciju, prvo ćemo preuzeti javatuples.jar datoteka. I dodajte ovu datoteku stazi projekta.
Također možemo koristiti sljedeću ovisnost u pom.xml datoteku za implementaciju strukture podataka torki u Javi.
org.javatuples javatuples 1.2
Implementirajmo tuple i stvorimo jednostavan Java tuple program.
Javatuples biblioteka
The javatuples knjižnica ima klase tuple koje odgovaraju veličini tuple. Torke mogu biti različite veličine. Torka može sadržavati najviše 10 elementi. Implementacija svake torke je drugačija. Hijerarhija klasa je sljedeća.
Java.lang.Object ↳ org.javatuples.Tuple ↳ org.javatuples.ClassName
Java Tuple klasa
The Tuple je apstraktna osnovna klasa za sve klase torki kojima pripada org.javatuples paket. Sve metode klase tuple su javne i konačne. Sljedeća tablica sažima metode klase tuple. Implementira Iterable i Serializable sučelja.
metoda | Sintaksa | Opis |
---|---|---|
sadrži () | javni konačni Boolean sadrži (java.lang.Object value) | Provjerava ima li tuple određeni element ili ne. |
sadržiSve() | public final boolean containsAll(java.util.Collection collection) | Vraća true ako ova torka sadrži sve elemente navedene zbirke (List/Array). |
jednako() | public final Boolean equals(java.lang.Object obj) | Nadjačava jednako() metoda klase Object. |
getSize() | javni sažetak int getSize() | Vraća veličinu torke. |
getValue() | javni konačni java.lang.Object getValue(int pos) | Dohvatite vrijednost na određenoj poziciji u torki. Ova metoda mora vratiti objekt, tako da ćete upotrebom nje izgubiti sigurnost tipa koju dobivate s getValueX() metode. |
hashCode() | javni konačni int hashCode() | Vraća hash kod za niz. Nadjačava hashCode() metoda klase Object. |
indexOf() | public final int indexOf(java.lang.Object value) | Vraća indeks unutar ovog niza prvog pojavljivanja navedenog podniza. |
iterator() | javni konačni java.util.Iterator iterator() | Vraća iterator preko elemenata u ovoj torki u ispravnom nizu. |
lastIndexOf() | public final int lastIndexOf(java.lang.Object value) | Vraća indeks unutar ovog niza posljednjeg pojavljivanja navedenog podniza. |
toArray() | javni konačni java.lang.Object[] toArray() | Pretvara tuple u niz. |
toString() | javni konačni java.lang.String toString() | Vraća nizovnu reprezentaciju objekta. Nadjačava metodu toString() klase Object. |
izlistati() | javna konačna java.util.List toList() | Pretvara tuple u listu. |
Izravne poznate potklase
Veličina Tuple | Naziv klase tuple | Primjer |
---|---|---|
Jedan element | Jedinica | Jedinica |
Dva elementa | Par | Par |
Tri elementa | Trojka | Trojka |
Četiri elementa | Kvartet | Kvartet |
Pet elemenata | Kvintet | Kvintet |
Šest elemenata | Sekstet | Sekstet |
Sedam elemenata | sedam | sedam |
Osam elemenata | Oktet | Oktet |
Devet elemenata | Ennead | Ennead |
Deset elemenata | Desetljeće | Desetljeće |
Osim gore navedenih klasa, postoje dvije dodatne klase koje nudi biblioteka javatuples, tj. KeyValue i LabelValue . Ove dvije klase su slične Par klase i pružaju istu funkcionalnost, ali u različitoj semantici.
Svaka klasa tuple implementira sljedeća tri sučelja:
- Iterable
- Usporedivo
- Serializable
Implementacija Tuplea
Implementacija tuplea u Javi je vrlo jednostavna. Moramo stvoriti instancu klase tuple koja odgovara veličini.
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); } }
Izlaz:
The details of the employee are: [Sophia, Female, 22, Marketing Manager]
Tuple operacije
Sljedeće operacije se mogu izvesti na torci:
- Stvaranje tuplea
- Dobivanje vrijednosti
- Postavljanje vrijednosti
- Dodavanje elemenata
- Iteracija preko Tuplea
- Pretvori tuple u popis
- Pretraživanje u Tupleu
Stvaranje tuplea
Postoje tri načina za stvaranje torke:
- Korištenjem metode with().
- Korištenjem Konstruktora
- Korištenjem zbirke
Pogledajmo gornja tri načina za stvaranje torke.
Korištenjem metode with().
Knjižnica javatuples pruža s() metoda koja stvara torku s navedenim vrijednostima. Metoda pripada org.javatuples.Pair paket. Koristi se za instanciranje objekata s vrijednostima.
Sintaksa:
ClassName object = ClassName.with(value-1, value-2, ......, value-n);
Primjer:
Pair pair = Pair.with('iPhone 12', 112000.00);
Gornji objekt klase Pair stvara torku s dvije vrijednosti. Kreirajmo Java program za isto.
CreateTupleExample1.java
c++ par
import org.javatuples.Pair; class CreateTupleExample1 { public static void main(String args[]) { Pair pair = Pair.with(9086651, 'Dell Laptop'); System.out.println(pair); } }
Izlaz:
[9086651, Dell Laptop]
Korištenjem Konstruktora
U ovom slučaju kreiramo konstruktor klase, prema zahtjevu.
Sintaksa:
ClassName object = new ClassName (value-1, value-2, ……., value-n);
Primjer:
Quintet quintet = new Quintet (91237, 'Mac Book Air', 88490.00, '8-Core CPU', 4);
Kreirajmo Java program za stvaranje torke pomoću konstruktora.
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); } }
Izlaz:
[91237, Mac Book Air, 88490.0, 8-Core CPU, 4]
Korištenjem zbirke
Knjižnica javatuples omogućuje nam stvaranje torke iz kolekcije korištenjem iz zbirke() metoda. Također nam omogućuje stvaranje torke iz niza pomoću fromArray() metoda. Imajte na umu da kolekcija/niz mora imati isti tip i vrijednosti kao tuple.
Kolekcija/niz mora imati isti tip kao Tuple i broj vrijednosti u kolekciji/nizu mora odgovarati klasi Tuple.
Sintaksa:
ClassName object = ClassName.fromCollection(list); ClassName object = ClassName.fromArray(array);
Primjer:
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); } }
Izlaz:
[C, C++, Java, Python, Scala, Ruby, PHP, COBOL] [One, Two, Three, Four, Five, Six]
Dobiti vrijednosti
Biblioteka javatuples nam također omogućuje dohvaćanje vrijednosti iz torke na navedenom indeksu pomoću getValueX() metoda. Gdje X označava vrijednost indeksa objekta. Indeksiranje počinje od 0.
Primjer:
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()); } }
Izlaz:
[Andrew]
Postavite vrijednosti
Kao što smo gore spomenuli, torke su nepromjenjive. Stoga se ne mogu mijenjati nakon što su stvoreni. Kako bi se riješio problem, biblioteka javatuples pruža setValueX() metoda. Gdje je X vrijednost indeksa na koju želimo postaviti određenu vrijednost. Metoda stvara kopiju torke s novo dodanom vrijednošću na navedenom indeksu i vraća istu torku.
Primjer:
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); } }
Izlaz:
[67, 68]
Dodavanje vrijednosti
Postoje dva načina dodavanja vrijednosti u torku:
mojlivecricket.in
- Na kraju tuple
- Na određenom indeksu
Na kraju Tuple
Knjižnica javatuples pruža dodati() metoda za dodavanje objekata u torku. Dodaje objekt na kraj torke i vraća novu torku podudaranjem broja elemenata.
Pretpostavimo da imamo torku koja ima dva elementa i želimo dodati još jedan element u torku. U takvom slučaju, par parova neće podržavati treći element. Stoga, kada dodamo element parnoj torki, on se pretvara u trostruku torku. Pogledajmo primjer.
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); } }
Izlaz:
[Jack, 46] [Jack, 46, Finance Professional]
Također možemo dodati jednu torku drugoj torki. Povećava broj elemenata u novogeneriranoj torki. Dakle, vraća tip torke na temelju broja elemenata prisutnih nakon dodavanja.
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); } }
Izlaz:
[Mango, Grapes, Papaya] [Mango, Banana, Grapes, Papaya] [Mango, Banana, Grapes, Papaya, Mango, Grapes, Papaya]
Na navedenom indeksu
Prema zadanim postavkama, novi elementi se dodaju na kraj torke. Ali možemo dodati elemente na navedeni indeks pomoću dodatiX() metoda.
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); } }
Izlaz:
[MCA, M.Sc., MBBS] [MCA, M.Sc., M.Tech, MBBS]
Pretraživanje elementa
Također možemo tražiti element koji se nalazi u torki. Za pretraživanje javatuples biblioteka nudi sadrži () metoda klase Tuple. Vraća Booleovu vrijednost pravi ako je element prisutan, else vraća lažno . Pogledajmo primjer.
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); } }
Izlaz:
redak i stupac
true false
Pretvorite tuple u kolekciju ili polje
Svaka klasa tuple ima metode asList() i toArray() koje vraćaju Listu odnosno Niz. Pogledajmo primjer.
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)); } }
Izlaz:
[Dog, 12, German Shepherd, 23.89] [Dog, 12, German Shepherd, 23.89]
Imajte na umu da tuple može sadržavati heterogene tipove tako da će rezultirajući tip biti od Popis ili Objekt[] prema tome.
Iteracija preko tuplea
Sve klase tuple implementiraju Iterable sučelje. Dakle, možemo iterirati torku na isti način kao zbirke ili nizove.
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); } } }
Izlaz:
Dell 5600.0 34 Digital Solutions
Tuple vs. Popis/niz
Tuple | Popis |
---|---|
To je skup vrijednosti odvojenih zarezima koje su zatvorene zagrada . | To je skup vrijednosti odvojenih zarezima koje su zatvorene uglate zagrade . |
Zagrada je neobavezan . | Uglate zagrade su obavezna . |
to je nepromjenjiv . | to je promjenjiv . |
Zahtijeva manje memorija. | Zahtijeva više memorije. |
Ima manje tvorničke metode. | Ima više tvorničke metode. |
Ono ima fiksni duljina. | Ima varijabla duljine. |
Pohranjuje heterogena podaci. | Pohranjuje homogena podaci. |
Pogodan je za velika količine podataka. | Pogodan je za a mali količina podataka. |
Može se pohraniti u a popis . | Može se pohraniti unutar a tuple . |
to je brže u usporedbi s Listom. | to je sporije u usporedbi s torkom. |
Predstavlja se kao t1 = (1, 2, 3, 4, 5) | Predstavlja se kao l1 = [1, 2, 3, 4, 5] |