logo

Krotka Java

A krotka to struktura danych, w której można przechowywać obiekty różnych typów. Obiekty te nie są ze sobą połączone, ale mają znaczenie, gdy spojrzymy na nie zbiorowo. W tej części omawiamy co to jest krotka , cechy, rozmiar, I operacje krotek. Omówimy także Implementacja krotki w Javie .

Co to jest krotka?

Ogólnie rzecz biorąc, A krotka jest uporządkowanym zbiorem obiektów. W krotce dane są przechowywane jako obiekt w oddzielnej tablicy bajtów. Zawiera wartości oddzielone przecinkami, ujęte w parę nawiasów kwadratowych []. Krotki są niezmienny, w przeciwieństwie do struktury danych list. Krotka może przechowywać wiele krotek. Można go również uznać za obiekt anonimowy.

Funkcje Tuple'a

Tuple ma następujące funkcje:

  • To jest typesafe, iterowalny, niezmienny, I serializować .
  • Implementuje toString(), równa się(), I hashCode()
  • Implementuje również Porównywalny (Tuple implementuje porównywalne)

Przykład krotki

Rozważmy następujący przykład.

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

Powyższa krotka to a kwartet krotka, ponieważ tak jest cztery elementy (obiekty). Zauważamy, że każdy obiekt jest innego typu. Ale kiedy rozważymy to zbiorowo, ma to określone znaczenie. Powyższa krotka reprezentuje dane pracownika, takie jak imię i nazwisko, płeć, wiek i stanowisko.

Zobaczmy kilka innych przykładów krotek.

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

Krotka w Javie

W Javie krotka to ogólna struktura danych, która traktuje każdy element jako obiekt, a obiekty te są przechowywane w osobnej tablicy bajtów. Innymi słowy, możemy również powiedzieć, że krotka jest zamówione zbiór obiektów różnych typów.

cyfry rzymskie 1-100

Funkcjonalność krotki można zaimplementować przy użyciu struktury danych List i Array, ale te struktury danych z założenia nie obsługują różnych typów danych. Dlatego jasne jest, że heterogeniczny krotka przy użyciu standardowej struktury danych (lista/tablica) nie jest możliwa w Javie. Ponieważ wymagaliśmy krotka struktura danych spełniająca wymóg przechowywania jednorodny struktura danych.

Zauważ to Struktura danych krotek nie jest obecna w programowaniu w języku Java , domyślnie. Możemy jednak zaimplementować strukturę danych krotek, korzystając z biblioteki innej firmy o nazwie javatuples .

Zanim przejdziemy do wdrożenia najpierw pobierzemy plik javatuples.jar plik. I dodaj ten plik do ścieżki projektu.

Możemy także skorzystać z poniższej zależności pom.xml plik do implementacji struktury danych krotek w Javie.

 org.javatuples javatuples 1.2 

Zaimplementujmy krotkę i utwórzmy prosty program krotki w języku Java.

Biblioteka Javatuples

The javatuples Biblioteka zawiera klasy krotek odpowiadające rozmiarowi krotki. Krotki mogą mieć różną wielkość. Krotka może pomieścić maksymalnie 10 elementy. Implementacja każdej krotki jest inna. Hierarchia klas jest następująca.

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

Klasa krotki Java

The Krotka jest abstrakcyjną klasą bazową dla wszystkich klas krotek, do których należy org.javatuples pakiet. Wszystkie metody klasy Tuple są publiczne i ostateczne. W poniższej tabeli podsumowano metody klasy krotki. Implementuje interfejsy Iterable i Serializable.

metoda Składnia Opis
zawiera() publiczna końcowa wartość logiczna zawiera (wartość Java.lang.Object) Sprawdza, czy krotka ma określony element, czy nie.
zawieraWszystko() publiczna końcowa wartość logiczna zawiera wszystko (kolekcja Java.util.Collection) Zwraca wartość true, jeśli ta krotka zawiera wszystkie elementy określonej kolekcji (lista/tablica).
równa się() publiczna końcowa wartość logiczna równa się (java.lang.Object obj) Zastępuje równa się() metoda klasy Object.
pobierzRozmiar() publiczne streszczenie int getSize() Zwraca rozmiar krotki.
getValue() public final java.lang.Object getValue(int poz) Pobierz wartość z określonego miejsca w krotce. Ta metoda musi zwracać obiekt, więc użycie jej spowoduje utratę bezpieczeństwa typów, jakie zapewnia metoda pobierzWartośćX() metody.
hashCode() publiczny końcowy int hashCode() Zwraca kod skrótu dla ciągu. Zastępuje hashCode() metoda klasy Object.
indeks() public final int indeksOf(wartość obiektu Java.lang.Object) Zwraca indeks w tym ciągu pierwszego wystąpienia określonego podciągu.
iterator() publiczny końcowy java.util.Iterator iterator() Zwraca iterator po elementach w tej krotce w odpowiedniej kolejności.
ostatniIndeksOf() public final int lastIndexOf(wartość obiektu Java.lang.Object) Zwraca indeks w tym ciągu ostatniego wystąpienia określonego podciągu.
do tablicy() publiczny końcowy java.lang.Object[] toArray() Konwertuje krotkę na tablicę.
doString() publiczny końcowy java.lang.String toString() Zwraca ciąg znaków reprezentujący obiekt. Zastępuje metodę toString() klasy Object.
notować() publiczny końcowy java.util.List toList() Konwertuje krotkę na listę.

Bezpośrednie znane podklasy

Rozmiar krotki Nazwa klasy krotki Przykład
Jeden element Jednostka Jednostka
Dwa elementy Para Para
Trzy elementy Tryplet Tryplet
Cztery elementy Kwartet Kwartet
Pięć elementów Kwintet Kwintet
Sześć elementów Sekstet Sekstet
Siedem elementów siedem siedem
Osiem elementów Oktet Oktet
Dziewięć elementów Ennead Ennead
Dziesięć elementów Dekada Dekada

Oprócz powyższych klas, istnieją dwie dodatkowe klasy udostępniane przez bibliotekę javatuples, tj. Kluczowa wartość I Wartość etykiety . Te dwie klasy są podobne do Para class i zapewniają tę samą funkcjonalność, ale w innej semantyce.

Każda klasa krotki implementuje następujące trzy interfejsy:

  • Iterowalne
  • Porównywalny
  • Możliwość serializacji

Implementacja krotki

Implementacja krotki w Javie jest bardzo łatwa. Musimy utworzyć instancję klasy krotki odpowiadającą rozmiarowi.

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

Wyjście:

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

Operacje krotki

Na krotce można wykonać następujące operacje:

  • Tworzenie krotki
  • Uzyskiwanie wartości
  • Ustawianie wartości
  • Dodawanie elementów
  • Iteruj po Tuple
  • Konwertuj krotkę na listę
  • Wyszukiwanie w Tuple

Tworzenie krotki

Krotkę można utworzyć na trzy sposoby:

  • Używając metody with().
  • Za pomocą konstruktora
  • Za pomocą kolekcji

Przyjrzyjmy się powyższym trzem sposobom tworzenia krotki.

Używając metody with().

Biblioteka javatuples udostępnia z() metoda, która tworzy krotkę z określonymi wartościami. Metoda należy do org.javatuples.Pair pakiet. Służy do tworzenia instancji obiektów z wartościami.

misja niemożliwa wszystkie filmy

Składnia:

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

Przykład:

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

Powyższy obiekt klasy Pair tworzy krotkę z dwiema wartościami. Stwórzmy do tego program w Javie.

UtwórzTupleExample1.java

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

Wyjście:

 [9086651, Dell Laptop] 

Za pomocą konstruktora

W tym przypadku tworzymy konstruktor klasy zgodnie z wymaganiami.

Składnia:

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

Przykład:

jak przekonwertować ciąg na liczbę całkowitą Java
 Quintet quintet = new Quintet (91237, 'Mac Book Air', 88490.00, '8-Core CPU', 4); 

Stwórzmy program Java, aby utworzyć krotkę za pomocą konstruktora.

UtwórzTupleExample2.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); } } 

Wyjście:

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

Za pomocą kolekcji

Biblioteka javatuples pozwala nam utworzyć krotkę z kolekcji za pomocą metody z kolekcji() metoda. Pozwala nam również utworzyć krotkę z tablicy za pomocą metody z tablicy() metoda. Należy pamiętać, że kolekcja/tablica musi mieć ten sam typ i wartości co krotka.

Kolekcja/tablica musi być tego samego typu co Tuple, a liczba wartości w kolekcji/tablicy musi odpowiadać klasie Tuple.

Składnia:

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

Przykład:

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

UtwórzTupleExample3.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); } } 

Wyjście:

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

Uzyskaj wartości

Biblioteka javatuples umożliwia także pobieranie wartości z krotki o określonym indeksie za pomocą metody pobierzWartośćX() metoda. Gdzie X oznacza wartość indeksu obiektu. Indeksowanie zaczyna się od 0.

Java łączy ciągi znaków

Przykład:

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

Wyjście:

 [Andrew] 

Ustaw wartości

Jak omówiliśmy powyżej, krotki są niezmienne. Dlatego też nie można ich modyfikować po utworzeniu. Aby przezwyciężyć ten problem, biblioteka javatuples udostępnia bibliotekę ustawWartośćX() metoda. Gdzie X jest wartością indeksu, przy której chcemy ustawić konkretną wartość. Metoda tworzy kopię krotki z nowo dodaną wartością pod określonym indeksem i zwraca tę samą krotkę.

Przykład:

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

Wyjście:

 [67, 68] 

Dodawanie wartości

Istnieją dwa sposoby dodawania wartości w krotce:

  • Na końcu krotki
  • W konkretnym indeksie

Na koniec Tuple

Biblioteka javatuples udostępnia dodać() metoda dodawania obiektów do krotki. Dodaje obiekt na końcu krotki i zwraca nową krotkę, dopasowując liczbę elementów.

Załóżmy, że mamy krotkę zawierającą dwa elementy i chcemy dodać do niej kolejny element. W takim przypadku krotka pary nie będzie obsługiwać trzeciego elementu. Dlatego też, gdy dodamy element do krotki pary, zostanie on przekonwertowany na krotkę potrójną. Zobaczmy przykład.

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

Wyjście:

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

Możemy także dodać jedną krotkę do innej krotki. Zwiększa liczbę elementów w nowo wygenerowanej krotce. Dlatego zwraca typ krotki na podstawie liczby elementów obecnych po dodaniu.

konwersja z ciągu znaków na int w Javie

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

Wyjście:

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

Przy określonym indeksie

Domyślnie nowe elementy dodawane są na końcu krotki. Ale możemy dodać elementy o określonym indeksie, używając metody dodajX() 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); } } 

Wyjście:

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

Wyszukiwanie elementu

Możemy także wyszukać element znajdujący się w krotce. Do wyszukiwania biblioteka javatuples udostępnia plik zawiera() metoda klasy Tuple. Zwraca wartość logiczną PRAWDA jeśli element jest obecny, else zwraca FAŁSZ . Zobaczmy przykład.

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

Wyjście:

 true false 

Konwertuj krotkę na kolekcję lub tablicę

Każda klasa krotki ma metody asList() i toArray(), które zwracają odpowiednio Listę i Array. Zobaczmy przykład.

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

Wyjście:

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

Należy pamiętać, że krotka może zawierać typy heterogeniczne, więc wynikowym typem będzie Lista Lub Obiekt[] odpowiednio.

Iteracja po krotce

Wszystkie klasy krotek implementują metodę Iterowalne interfejs. Możemy zatem iterować krotkę w taki sam sposób, jak kolekcje lub tablice.

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

Wyjście:

 Dell 5600.0 34 Digital Solutions 

Tuple kontra. Lista/tablica

Krotka Java
Krotka Lista
Jest to zbiór wartości oddzielonych przecinkami, które są ujęte w nawias . Jest to zbiór wartości oddzielonych przecinkami, które są ujęte w nawiasy kwadratowe .
Nawias jest opcjonalny . Nawiasy kwadratowe są obowiązkowy .
To jest niezmienny . To jest zmienny .
To wymaga mniej pamięć. Wymaga więcej pamięci.
To ma mniej metody fabryczne. To ma więcej metody fabryczne.
To ma naprawił długość. To ma zmienny długości.
Przechowuje heterogeniczny dane. Przechowuje jednorodny dane.
Nadaje się do duży ilości danych. Nadaje się do mały ilość danych.
Można go przechowywać w lista . Można go przechowywać wewnątrz krotka .
To jest szybciej w porównaniu do Listy. To jest wolniej w porównaniu do krotki.
Jest reprezentowany jako t1 = (1, 2, 3, 4, 5) Jest reprezentowany jako l1 = [1, 2, 3, 4, 5]