A monikko on tietorakenne, joka voi sisältää erityyppisiä objekteja. Nämä esineet eivät ole yhteydessä toisiinsa, mutta niillä on merkitys, kun tarkastelemme niitä kollektiivisesti. Tässä osiossa keskustelemme mikä on tuple , ominaisuudet, koko, ja toiminnot monista. Lisäksi keskustelemme tuple-toteutus Javassa .
Mikä on tuple?
Yleisesti ottaen a monikko on järjestetty kokoelma esineitä. Tuplessa data tallennetaan objektina erilliseen tavutaulukkoon. Siinä on pilkuilla erotetut arvot hakasulkeiden sisällä []. Tuples ovat muuttumaton, toisin kuin Listojen tietorakenne. Yksi monikko voi sisältää useita monikkoa. Sitä voidaan pitää myös anonyyminä kohteena.
Tuplen ominaisuudet
Tuplella on seuraavat ominaisuudet:
- se on tyyppiturvallinen, toistuva, muuttumaton, ja sarjoitettavissa .
- Se toteuttaa toString(), equals(), ja hashCode()
- Se myös toteuttaa Vertailukelpoinen (Tuple työkaluja vertailukelpoinen)
Tuple esimerkki
Tarkastellaan seuraavaa esimerkkiä.
['Sophia', 'Female', 22, 'Marketing Manager']
Yllä oleva monikko on a kvartetti monikko, koska sillä on neljä elementtejä (objekteja). Huomaamme, että jokainen esine on erityyppistä. Mutta kun tarkastelemme sitä kollektiivisesti, sillä on erityinen merkitys. Yllä oleva monikko edustaa työntekijän tietoja, kuten nimeä, sukupuolta, ikää ja nimitystä.
Katsotaanpa joitain muita esimerkkejä monista.
['Java', 'Object-oriented', 14] ['John', 'Wick' 21, 'USA', false, '[email protected]'] [3, 'Samsung', 'Galaxy S2', 37000.00]
Tuple Javassa
Javassa tuple on yleinen tietorakenne, joka käsittelee jokaista elementtiä objektina, ja nämä objektit tallentuvat erilliseen tavutaulukkoon. Toisin sanoen voimme myös sanoa, että tuple on an tilattu kokoelma erityyppisiä esineitä.
Tuplen toiminnallisuus voidaan toteuttaa List- ja Array-tietorakenteella, mutta nämä tietorakenteet eivät sisällä suunnittelultaan erilaisia tietotyyppejä. Näin ollen se on selvää heterogeeninen monikko, joka käyttää vakiotietorakennetta (List/Array) ei ole mahdollista Javassa. Koska vaadimme monikko tietorakenne hallintavaatimuksen täyttämiseksi homogeeninen tietorakenne.
Ota huomioon, että Tuple-tietorakennetta ei ole Java-ohjelmoinnissa , oletuksena. Mutta voimme toteuttaa tuple-tietorakenteen käyttämällä kolmannen osapuolen kirjastoa nimeltä javatuples .
Ennen kuin siirrymme toteutukseen, lataamme ensin javatuples.jar tiedosto. Ja lisää tämä tiedosto projektin polkuun.
Voimme käyttää myös seuraavaa riippuvuutta pom.xml tiedosto toteuttaaksesi tuple-tietorakenteen Javassa.
org.javatuples javatuples 1.2
Toteutetaan monikko ja luodaan yksinkertainen Java-tuple-ohjelma.
Javatuples-kirjasto
The javatuples kirjastossa on tuple-luokat, jotka vastaavat monikon kokoa. Tuplet voivat olla erikokoisia. Tuplessa voi olla enintään 10 elementtejä. Jokaisen monikon toteutus on erilainen. Luokkahierarkia on seuraava.
Java.lang.Object ↳ org.javatuples.Tuple ↳ org.javatuples.ClassName
Java Tuple Class
The Tuple on abstrakti perusluokka kaikille monikkoluokille, joihin kuuluu org.javatuples paketti. Kaikki tuple-luokan menetelmät ovat julkisia ja lopullisia. Seuraavassa taulukossa on yhteenveto monikkoluokan menetelmistä. Se toteuttaa iteroitavia ja serialoitavia rajapintoja.
Menetelmä | Syntaksi | Kuvaus |
---|---|---|
sisältää() | julkinen lopullinen boolean sisältää(java.lang.Object value) | Se tarkistaa, onko monissa tiettyä elementtiä vai ei. |
sisältääKaikki() | julkinen lopullinen boolean sisältääKaikki(java.util.Collection-kokoelma) | Se palauttaa tosi, jos tämä monikko sisältää kaikki määritetyn kokoelman (Lista/Matriisi) elementit. |
on yhtä suuri () | julkinen lopullinen boolean on yhtä kuin (java.lang.Object obj) | Ohittaa on yhtä suuri () Object-luokan menetelmä. |
getSize() | julkinen abstrakti int getSize() | Se palauttaa tuplen koon. |
getValue() | julkinen lopullinen java.lang.Object getValue(int pos) | Hanki arvo tietystä kohdasta monikko. Tämän menetelmän on palautettava objekti, joten sitä käyttämällä menetät tyyppiturvan, jonka saat getValueX() menetelmiä. |
hash koodin() | julkinen lopullinen int hashCode() | Se palauttaa merkkijonolle hash-koodin. Se ohittaa hash koodin() Object-luokan menetelmä. |
sisällysluettelo() | public final int indexOf(java.lang.Object value) | Se palauttaa määritetyn alimerkkijonon ensimmäisen esiintymän indeksin tässä merkkijonossa. |
iteraattori() | julkinen lopullinen java.util.Iterator iterator() | Se palauttaa iteraattorin tämän monikon elementtien päälle oikeassa järjestyksessä. |
lastIndexOf() | public final int lastIndexOf(java.lang.Object value) | Se palauttaa määritetyn alimerkkijonon viimeisen esiintymän tämän merkkijonon indeksin. |
toArray() | julkinen lopullinen java.lang.Object[] toArray() | Se muuntaa monikon taulukoksi. |
toString() | julkinen lopullinen java.lang.String toString() | Se palauttaa objektin merkkijonoesityksen. Ohittaa Object-luokan toString()-metodin. |
listata() | julkinen lopullinen java.util.List toList() | Se muuntaa tuplen luetteloksi. |
Suorat tunnetut alaluokat
Tuplen koko | Tuple luokan nimi | Esimerkki |
---|---|---|
Yksi elementti | Yksikkö | Yksikkö |
Kaksi elementtiä | Pari | Pari |
Kolme elementtiä | Kolmikko | Kolmikko |
Neljä elementtiä | Kvartetti | Kvartetti |
Viisi elementtiä | Kvintetti | Kvintetti |
Kuusi elementtiä | Sekstetti | Sekstetti |
Seitsemän elementtiä | seitsemän | seitsemän |
Kahdeksan elementtiä | Oktetti | Oktetti |
Yhdeksän elementtiä | Ennead | Ennead |
Kymmenen elementtiä | Vuosikymmen | Vuosikymmen |
Yllä olevien luokkien lisäksi javatuples-kirjasto tarjoaa kaksi muuta luokkaa, ts. KeyValue ja LabelValue . Nämä kaksi luokkaa ovat samanlaisia Pari luokkaa ja tarjoavat samat toiminnot, mutta eri semantiikkassa.
Jokainen monikkoluokka toteuttaa seuraavat kolme käyttöliittymää:
0,2 murto-osana
- Iteroitavissa
- Vertailukelpoinen
- Sarjasoitavissa
Tuplen toteutus
Tuplen toteuttaminen Javassa on erittäin helppoa. Meidän on luotava tuple-luokan esiintymä, joka vastaa kokoa.
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); } }
Lähtö:
The details of the employee are: [Sophia, Female, 22, Marketing Manager]
Tuple Operaatiot
Seuraavat toiminnot voidaan suorittaa lukujonolle:
- Tuplen luominen
- Arvojen saaminen
- Arvojen asettaminen
- Elementtien lisääminen
- Toista Tuplessa
- Muunna Tuple luetteloksi
- Haku Tuplesta
Tuplen luominen
On kolme tapaa luoda tuple:
- Käyttämällä with()-menetelmää
- Käyttämällä Constructoria
- Käyttämällä kokoelmaa
Katsotaanpa yllä olevia kolmea tapaa luoda monikko.
Käyttämällä with()-menetelmää
javatuples-kirjasto tarjoaa kanssa() menetelmä, joka luo monikon määritetyillä arvoilla. Menetelmä kuuluu org.javatuples.Pair paketti. Sitä käytetään objektien ilmentämiseen arvoilla.
Syntaksi:
ClassName object = ClassName.with(value-1, value-2, ......, value-n);
Esimerkki:
Pair pair = Pair.with('iPhone 12', 112000.00);
Yllä oleva Pair-luokan objekti luo monikon, jossa on kaksi arvoa. Tehdään samaa varten Java-ohjelma.
LuoTupleExample1.java
import org.javatuples.Pair; class CreateTupleExample1 { public static void main(String args[]) { Pair pair = Pair.with(9086651, 'Dell Laptop'); System.out.println(pair); } }
Lähtö:
[9086651, Dell Laptop]
Käyttämällä Constructoria
Tässä tapauksessa luomme luokan rakentajan vaatimuksen mukaan.
pinot java
Syntaksi:
ClassName object = new ClassName (value-1, value-2, ……., value-n);
Esimerkki:
Quintet quintet = new Quintet (91237, 'Mac Book Air', 88490.00, '8-Core CPU', 4);
Luodaan Java-ohjelma monikon luomiseksi konstruktoria käyttämällä.
LuoTupleExample2.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); } }
Lähtö:
[91237, Mac Book Air, 88490.0, 8-Core CPU, 4]
Käyttämällä kokoelmaa
javatuples-kirjaston avulla voimme luoda kokoelman kokoelmasta käyttämällä kokoelmasta() menetelmä. Sen avulla voimme myös luoda monikon taulukosta käyttämällä fromArray() menetelmä. Huomaa, että kokoelmalla/taulukolla on oltava sama tyyppi ja arvot kuin monikko.
Kokoelman/taulukon tyypin on oltava sama kuin Tuplella ja kokoelman/taulukon arvojen lukumäärän on vastattava Tuple-luokkaa.
Syntaksi:
ClassName object = ClassName.fromCollection(list); ClassName object = ClassName.fromArray(array);
Esimerkki:
Octet p1 = Octet.fromCollection(list); Sextet p2 = Sextet.fromArray(arr);
LuoTupleExample3.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); } }
Lähtö:
[C, C++, Java, Python, Scala, Ruby, PHP, COBOL] [One, Two, Three, Four, Five, Six]
Hanki arvot
Javatuples-kirjaston avulla voimme myös noutaa arvoja määritetyn indeksin monikosta käyttämällä getValueX() menetelmä. Missä X tarkoittaa objektin indeksiarvoa. Indeksointi alkaa 0:sta.
Esimerkki:
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()); } }
Lähtö:
[Andrew]
Aseta arvot
Kuten yllä keskustelimme, monikot ovat muuttumattomia. Siksi niitä ei voi muokata, kun ne on luotu. Ongelman ratkaisemiseksi javatuples-kirjasto tarjoaa setValueX() menetelmä. Missä X on indeksiarvo, johon haluamme asettaa tietyn arvon. Menetelmä luo kopion monikosta, jossa on uusi lisätty arvo määritettyyn indeksiin, ja palauttaa saman monikon.
Esimerkki:
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); } }
Lähtö:
[67, 68]
Arvon lisääminen
On kaksi tapaa lisätä arvoja monikkoon:
merkkijonon muunnos int:ksi javassa
- Tuplen lopussa
- Tietyssä indeksissä
Tuplen lopussa
javatuples-kirjasto tarjoaa lisätä() tapa lisätä objekteja monitoon. Se lisää objektin monikon loppuun ja palauttaa uuden monikon sovittamalla elementtien lukumäärän.
Oletetaan, että meillä on monikko, jossa on kaksi elementtiä, ja haluamme lisätä monikkoon toisen elementin. Tällaisessa tapauksessa Pair-tuple ei tue kolmatta elementtiä. Siksi, kun lisäämme elementin Pair-monitoon, se muunnetaan kolmiosaiseksi. Katsotaanpa esimerkkiä.
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); } }
Lähtö:
[Jack, 46] [Jack, 46, Finance Professional]
Voimme myös lisätä yhden monikon toiseen monikkoon. Se lisää elementtien määrää juuri luodussa monikossa. Siksi se palauttaa monikkotyypin lisäyksen jälkeen olevien elementtien lukumäärän perusteella.
LisääTuplesEsimerkki.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); } }
Lähtö:
[Mango, Grapes, Papaya] [Mango, Banana, Grapes, Papaya] [Mango, Banana, Grapes, Papaya, Mango, Grapes, Papaya]
Määritetyssä indeksissä
Oletuksena uudet elementit lisätään monikon loppuun. Mutta voimme lisätä elementtejä määritettyyn indeksiin käyttämällä addX() menetelmä.
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); } }
Lähtö:
[MCA, M.Sc., MBBS] [MCA, M.Sc., M.Tech, MBBS]
Elementin etsiminen
Voimme myös etsiä elementtiä, joka sijaitsee monikossa. Javatuples-kirjasto tarjoaa hakuja varten sisältää() Tuple-luokan menetelmä. Se palauttaa Boolen arvon totta jos elementti on läsnä, muu palauttaa väärä . Katsotaanpa esimerkkiä.
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); } }
Lähtö:
true false
Muunna Tuple kokoelmaksi tai taulukoksi
Jokaisessa monikkoluokassa on asList()- ja toArray()-metodit, jotka palauttavat listan ja taulukon. Katsotaanpa esimerkkiä.
TupleToCollection.java
java if -lause
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)); } }
Lähtö:
[Dog, 12, German Shepherd, 23.89] [Dog, 12, German Shepherd, 23.89]
Huomaa, että monikko voi sisältää heterogeenisiä tyyppejä, joten tuloksena oleva tyyppi on Lista tai Esine[] asianmukaisesti.
Iteraatio Tuplen yli
Kaikki tuple-luokat toteuttavat Iteroitavissa käyttöliittymä. Joten voimme iteroida monikkoa samalla tavalla kuin kokoelmia tai taulukoita.
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); } } }
Lähtö:
Dell 5600.0 34 Digital Solutions
Tuple vs. Lista/Matriisi
Tuple | Lista |
---|---|
Se on joukko pilkuilla erotettuja arvoja, jotka on suljettu suluissa . | Se on joukko pilkuilla erotettuja arvoja, jotka on suljettu hakasulkeet . |
Sulkumerkit on valinnainen . | Hakasulkeet ovat pakollinen . |
se on muuttumaton . | se on vaihteleva . |
Se vaatii Vähemmän muisti. | Se vaatii enemmän muistia. |
Sillä on vähemmän tehdasmenetelmiä. | Sillä on lisää tehdasmenetelmiä. |
Sillä on korjattu pituus. | Sillä on muuttuja pituudet. |
Se tallentaa heterogeeninen tiedot. | Se tallentaa homogeeninen tiedot. |
Se sopii suuri tietomääriä. | Se sopii a pieni datan määrä. |
Sitä voidaan säilyttää a lista . | Sitä voidaan säilyttää sisällä a monikko . |
se on nopeammin verrattuna listaan. | se on hitaammin tuplaan verrattuna. |
Se esitetään muodossa t1 = (1, 2, 3, 4, 5) | Se esitetään muodossa l1 = [1, 2, 3, 4, 5] |