А тупле је структура података која може да држи објекте различитих типова. Ови објекти нису повезани једни са другима, али имају значење када их посматрамо заједно. У овом одељку разматрамо шта је тупле , карактеристике, величина, и операције од туплес. Такође, разговараћемо о имплементација тупле у Јави .
Шта је тупле?
Генерално, а тупле је уређена колекција објеката. У тупле подаци се чувају као објекат у посебном низу бајтова. Има вредности раздвојене зарезима затворене у пар угластих заграда []. Туплес су непроменљив, за разлику од Листс структуре података. Торка може да садржи више торки. Такође се може сматрати анонимним објектом.
Карактеристике Тупле-а
Тупле има следеће карактеристике:
- То је безбедно за типове, итерабле, непроменљиво, и сериализабле .
- Она имплементира тоСтринг(), једнако(), и хасхЦоде()
- Такође имплементира Упоредиво (Тупле имплементс Цомпарабле)
Пример тупле
Хајде да размотримо следећи пример.
['Sophia', 'Female', 22, 'Marketing Manager']
Горња тортица је а квартет тупле јер има четири елементи (објекти). Примећујемо да је сваки објекат различитог типа. Али када га посматрамо заједно, то има специфично значење. Горњи тупле представља податке о запосленом као што су име, пол, старост и ознака.
Хајде да видимо неке друге примере тупле.
хакерска обрада
['Java', 'Object-oriented', 14] ['John', 'Wick' 21, 'USA', false, '[email protected]'] [3, 'Samsung', 'Galaxy S2', 37000.00]
Тупле у Јави
У Јави, тупле је генеричка структура података која сваки елемент третира као објекат, а ови објекти се чувају у засебном низу бајтова. Другим речима, такође можемо рећи да је тупле ан наредио збирка предмета различитих врста.
Функционалност торке се може имплементирати помоћу структуре података листе и низа, али ове структуре података не садрже различите типове података по дизајну. Отуда је јасно да хетерогена тупле који користи стандардну структуру података (Листа/ Низ) није могућ у Јави. Пошто смо захтевали тупле структуру података за испуњавање услова држања хомоген структура података.
Напоменути да структура података тупле није присутна у Јава програмирању , подразумевано. Али структуру података тупле можемо имплементирати користећи библиотеку треће стране под називом јаватуплес .
Пре него што пређемо на имплементацију, прво ћемо преузети јаватуплес.јар фајл. И додајте ову датотеку на путању пројекта.
Такође можемо користити следећу зависност у пом.кмл датотеку за имплементацију структуре података тупле у Јави.
org.javatuples javatuples 1.2
Хајде да имплементирамо тупле и направимо једноставан Јава тупле програм.
Јаватуплес библиотека
Тхе јаватуплес библиотека има класе тупле које одговарају величини тупле. Торке могу бити различите величине. Корка може да садржи највише 10 елемената. Имплементација сваке тупле је другачија. Хијерархија класа је следећа.
Java.lang.Object ↳ org.javatuples.Tuple ↳ org.javatuples.ClassName
Јава Тупле Цласс
Тхе Тупле је апстрактна основна класа за све класе тупле којима припада орг.јаватуплес пакет. Све методе класе тупле су јавне и коначне. Следећа табела резимира методе класе тупле. Имплементира Итерабле и Сериализабле интерфејсе.
Метод | Синтакса | Опис |
---|---|---|
садржи() | публиц финал боолеан цонтаинс(јава.ланг.Објецт валуе) | Проверава да ли тупле има одређени елемент или не. |
садржиСве() | публиц финал боолеан цонтаинсАлл(јава.утил.Цоллецтион цоллецтион) | Враћа тачно ако овај тупле садржи све елементе наведене колекције (Листа/Низ). |
једнако() | публиц финал боолеан екуалс(јава.ланг.Објецт обј) | Замењује једнако() метод класе Објецт. |
гетСизе() | јавни апстракт инт гетСизе() | Враћа величину тупле. |
гетВалуе() | публиц финал јава.ланг.Објецт гетВалуе(инт пос) | Добијте вредност на одређеној позицији у тупле. Овај метод мора да врати објекат, тако да ћете његовим коришћењем изгубити сигурност типа коју добијате са гетВалуеКс() методе. |
хасхЦоде() | јавни коначни инт хасхЦоде() | Враћа хеш код за стринг. То надјачава хасхЦоде() метод класе Објецт. |
индекс() | публиц финал инт индекОф(јава.ланг.Објецт валуе) | Враћа индекс унутар овог низа првог појављивања наведеног подниза. |
итератор() | публиц финал јава.утил.Итератор итератор() | Враћа итератор над елементима у овом тупле-у у одговарајућем редоследу. |
ластИндекОф() | публиц финал инт ластИндекОф(јава.ланг.Објецт валуе) | Враћа индекс у оквиру овог низа последњег појављивања наведеног подниза. |
тоАрраи() | публиц финал јава.ланг.Објецт[] тоАрраи() | Конвертује тупле у низ. |
тоСтринг() | публиц финал јава.ланг.Стринг тоСтринг() | Враћа стринг репрезентацију објекта. Замењује методу тоСтринг() класе Објецт. |
на листу() | публиц финал јава.утил.Лист тоЛист() | Конвертује тупле у листу. |
Директне познате подкласе
Величина тупле | Тупле Цласс Наме | Пример |
---|---|---|
Један елемент | Јединица | Јединица |
Два елемента | Пар | Пар |
Три елемента | Триплет | Триплет |
Четири елемента | Куартет | Куартет |
Пет елемената | Куинтет | Куинтет |
Сик Елементс | Сектет | Сектет |
Седам елемената | седам | седам |
Осам елемената | Октет | Октет |
Нине Елементс | Еннеад | Еннеад |
Десет елемената | Декада | Декада |
Поред наведених класа, постоје две додатне класе које обезбеђује библиотека јаватуплес, тј. КеиВалуе и ЛабелВалуе . Ове две класе су сличне Пар класе и пружају исту функционалност али у различитој семантици.
Свака класа тупле имплементира следећа три интерфејса:
- Итерабле
- Упоредиво
- Сериализабле
Имплементација Тупле-а
Имплементација тупле у Јави је веома лака. Морамо да креирамо инстанцу класе тупле која одговара величини.
ТуплеЕкампле.јава
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); } }
Излаз:
The details of the employee are: [Sophia, Female, 22, Marketing Manager]
Тупле Оператионс
Следеће операције се могу извршити на тупле:
- Креирање тупле
- Добијање вредности
- Подешавање вредности
- Додавање елемената
- Итерирајте преко Тупле
- Претворите тупле у листу
- Претраживање у Тупле
Креирање Тупле
Постоје три начина да се направи тупле:
- Коришћењем методе витх().
- Коришћењем конструктора
- Коришћењем колекције
Хајде да видимо горња три начина за креирање торке.
Коришћењем методе витх().
Јаватупле библиотека обезбеђује са() метод који креира тупле са наведеним вредностима. Метода припада орг.јаватуплес.Паир пакет. Користи се за инстанцирање објеката са вредностима.
Синтакса:
ClassName object = ClassName.with(value-1, value-2, ......, value-n);
Пример:
Pair pair = Pair.with('iPhone 12', 112000.00);
Горњи објекат класе Паир креира тупле са две вредности. Хајде да направимо Јава програм за исто.
ЦреатеТуплеЕкампле1.јава
import org.javatuples.Pair; class CreateTupleExample1 { public static void main(String args[]) { Pair pair = Pair.with(9086651, 'Dell Laptop'); System.out.println(pair); } }
Излаз:
[9086651, Dell Laptop]
Коришћењем конструктора
У овом случају, креирамо конструктор класе, према захтеву.
Синтакса:
ClassName object = new ClassName (value-1, value-2, ……., value-n);
Пример:
Quintet quintet = new Quintet (91237, 'Mac Book Air', 88490.00, '8-Core CPU', 4);
Хајде да направимо Јава програм за креирање тупле користећи конструктор.
ЦреатеТуплеЕкампле2.јава
фибоначијев низ у в
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); } }
Излаз:
[91237, Mac Book Air, 88490.0, 8-Core CPU, 4]
Коришћењем колекције
Библиотека јаватуплес нам омогућава да креирамо тупле из колекције користећи из колекције() методом. Такође нам омогућава да креирамо тупле од низа користећи фромАрраи() методом. Имајте на уму да колекција/низ мора имати исти тип и вредности као тупле.
Колекција/низ мора имати исти тип као Тупле и број вредности у колекцији/низу мора да одговара класи Тупле.
Синтакса:
ClassName object = ClassName.fromCollection(list); ClassName object = ClassName.fromArray(array);
Пример:
Octet p1 = Octet.fromCollection(list); Sextet p2 = Sextet.fromArray(arr);
ЦреатеТуплеЕкампле3.јава
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); } }
Излаз:
[C, C++, Java, Python, Scala, Ruby, PHP, COBOL] [One, Two, Three, Four, Five, Six]
Добијте вредности
Библиотека јаватуплес нам такође омогућава да дохватимо вредности из тупле на наведеном индексу коришћењем гетВалуеКс() методом. Где Кс означава вредност индекса објекта. Индексирање почиње од 0.
Пример:
Pair pair = new Pair(value-1, value-2); type1 val1 = pair.getValue0();
ГетВалуеЕкампле.јава
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()); } }
Излаз:
[Andrew]
Подесите вредности
Као што смо горе расправљали, тупле су непроменљиве. Дакле, они се не могу мењати када су направљени. Да би се превазишао проблем, јаватуплес библиотека обезбеђује сетВалуеКс() методом. Где је Кс вредност индекса на којој желимо да поставимо одређену вредност. Метод креира копију торке са новододатом вредношћу на наведеном индексу и враћа исту тупле.
Пример:
Pair pair = new Pair(value-1, value-2); type1 val1 = pair.getValue0();
СетВалуеЕкампле.јава
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); } }
Излаз:
[67, 68]
Додавање вредности
Постоје два начина да додате вредности у тупле:
јава за типове петљи
- На крају тупле
- На одређеном Индексу
На крају Тупле
Јаватупле библиотека обезбеђује додати() метод за додавање објеката у тупле. Додаје објекат на крај торке и враћа нову торку упарујући број елемената.
Претпоставимо да имамо тупле са два елемента и желимо да додамо још један елемент у тупле. У том случају, Паир тупле неће подржати трећи елемент. Стога, када додамо елемент у парну торку, он се конвертује у троструку торку. Хајде да видимо пример.
АддЕлементИнТупле.јава
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); } }
Излаз:
[Jack, 46] [Jack, 46, Finance Professional]
Такође можемо додати једну торку у другу торку. Повећава број елемената у новогенерисаном туплеу. Дакле, враћа тип тупле на основу броја присутних елемената након додавања.
АддТуплесЕкампле.јава
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); } }
Излаз:
[Mango, Grapes, Papaya] [Mango, Banana, Grapes, Papaya] [Mango, Banana, Grapes, Papaya, Mango, Grapes, Papaya]
На наведеном индексу
Подразумевано, нови елементи се додају на крају тупле. Али можемо додати елементе на наведени индекс користећи аддКс() методом.
АддАтИндекЕкампле.јава
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); } }
Излаз:
[MCA, M.Sc., MBBS] [MCA, M.Sc., M.Tech, MBBS]
Претраживање елемента
Такође можемо да тражимо елемент који се налази у тупле. За претраживање јаватупле библиотека обезбеђује садржи() метод класе Тупле. Враћа логичку вредност истина ако је елемент присутан, иначе се враћа лажно . Хајде да видимо пример.
СеарцхингЕлементЕкампле.јава
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); } }
Излаз:
true false
Претворите тупле у колекцију или низ
Свака класа тупле има методе асЛист() и тоАрраи() које враћају Лист и Арраи, респективно. Хајде да видимо пример.
ТуплеТоЦоллецтион.јава
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)); } }
Излаз:
[Dog, 12, German Shepherd, 23.89] [Dog, 12, German Shepherd, 23.89]
Имајте на уму да тупле може садржати хетерогене типове тако да ће резултујући тип бити од Листа или Објекат[] према томе.
Итерација преко тупле
Све класе тупле имплементирају Итерабле интерфејс. Дакле, можемо итерирати тупле на исти начин као колекције или низови.
ИтератеТупле.јава
ако по Радјарду Киплингу сажетак
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); } } }
Излаз:
Dell 5600.0 34 Digital Solutions
Тупле Вс. Листа/низ
Тупле | Листа |
---|---|
То је скуп вредности раздвојених зарезима које су затворене заграда . | То је скуп вредности раздвојених зарезима које су затворене угласте заграде . |
Заграда је опционо . | Угласте заграде су обавезна . |
То је непроменљиво . | То је променљиво . |
Захтева мање меморија. | Захтева више меморије. |
Има мање фабричке методе. | Има више фабричке методе. |
Има а фиксно дужина. | Има променљива дужине. |
То складишти хетерогена података. | То складишти хомоген података. |
Погодан је за велики количине података. | Погодан је за а мали количина података. |
Може се чувати у а листа . | Може се чувати унутар а тупле . |
То је брже у поређењу са Листом. | То је спорији у поређењу са тупле. |
Представља се као т1 = (1, 2, 3, 4, 5) | Представља се као л1 = [1, 2, 3, 4, 5] |