logo

جافا توبل

أ مترابطة بيانية هي بنية بيانات يمكنها الاحتفاظ بكائنات من أنواع مختلفة. هذه الأشياء ليست مرتبطة ببعضها البعض ولكن لها معنى عندما ننظر إليها بشكل جماعي. في هذا القسم نناقش ما هو الصفوف , الميزات، الحجم، و عمليات من الصفوف. وسنناقش أيضًا تنفيذ Tuple في جافا .

ما هو الصفوف؟

وبشكل عام أ مترابطة بيانية هي مجموعة مرتبة من الكائنات. يتم تخزين البيانات في المجموعة ككائن في مصفوفة بايت منفصلة. تحتوي على قيم مفصولة بفواصل ومحاطة بزوج من الأقواس المربعة []. الصفوف هي غير قابل للتغيير، على عكس بنية بيانات القوائم. يمكن للصفوف أن تحتوي على صفوف متعددة. ويمكن أيضًا اعتباره كائنًا مجهولاً.

مميزات التوبل

يحتوي Tuple على الميزات التالية:

  • إنها آمن، قابل للتكرار، غير قابل للتغيير، و قابل للتسلسل .
  • يقوم بتنفيذ إلى سلسلة ()، يساوي ()، و رمز التجزئة ()
  • كما يقوم بتنفيذ قابلة للمقارنة (تنفذ Tuple قابلة للمقارنة)

مثال الصفوف

دعونا نفكر في المثال التالي.

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

الصفوف أعلاه هي أ الرباعية tuple لأنه يحتوي على أربعة العناصر (الأشياء). نلاحظ أن كل كائن من نوع مختلف. ولكن عندما ننظر إليها بشكل جماعي، فإن لها معنى محددا. يمثل الصف أعلاه بيانات الموظف مثل الاسم والجنس والعمر والمنصب.

دعونا نرى بعض الأمثلة الأخرى من الصفوف.

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

Tuple في جاوة

في Java، الصف عبارة عن بنية بيانات عامة تتعامل مع كل عنصر ككائن، ويتم تخزين هذه الكائنات في مصفوفة بايت منفصلة. وبعبارة أخرى، يمكننا أن نقول أيضا أن الصف هو أمر جمع الكائنات من أنواع مختلفة.

يمكن تنفيذ وظيفة الصف باستخدام بنية بيانات القائمة والصفيف، لكن هياكل البيانات هذه لا تحتوي على أنواع مختلفة من أنواع البيانات حسب التصميم. ومن هنا فمن الواضح أن غير متجانسة tuple باستخدام بنية بيانات قياسية (قائمة/مصفوفة) غير ممكن في Java. منذ أن طلبنا مترابطة بيانية بنية البيانات للوفاء بمتطلبات عقد متجانس بنية البيانات.

لاحظ أن بنية بيانات Tuple غير موجودة في برمجة Java ، بشكل افتراضي. ولكن يمكننا تنفيذ بنية بيانات Tuple باستخدام مكتبة الطرف الثالث المسماة javatuples .

قبل الانتقال إلى التنفيذ، سنقوم أولاً بتنزيل الملف javatuples.jar ملف. وأضف هذا الملف إلى مسار المشروع.

يمكننا أيضًا استخدام التبعية التالية في pom.xml ملف لتنفيذ بنية بيانات tuples في Java.

 org.javatuples javatuples 1.2 

دعونا ننفذ Tuple وننشئ برنامج Java Tuple بسيط.

مكتبة جافاتوبلز

ال javatuples تحتوي المكتبة على فئات الصف التي تتوافق مع حجم الصف. قد تكون الصفوف مختلفة في الحجم. قد تحتوي المجموعة على الحد الأقصى 10 عناصر. يختلف تنفيذ كل صف. التسلسل الهرمي للفئة على النحو التالي.

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

فئة جافا Tuple

ال مترابطة بيانية هي فئة أساسية مجردة لجميع فئات الصف التي تنتمي إليها org.javatuples طَرد. جميع أساليب فئة Tuple عامة ونهائية. يلخص الجدول التالي أساليب فئة Tuple. ينفذ واجهات Iterable وSerializable.

طريقة بناء الجملة وصف
يتضمن() يحتوي المنطق المنطقي النهائي العام على (java.lang.Object value) يتحقق مما إذا كان الصف يحتوي على عنصر محدد أم لا.
يحتوي على الكل () المنطقية النهائية العامة تحتوي على الكل (مجموعة java.util.Collection) يتم إرجاعه صحيحًا إذا كان هذا الصف يحتوي على كافة عناصر المجموعة المحددة (قائمة/مصفوفة).
يساوي () القيمة المنطقية النهائية العامة تساوي (java.lang.Object obj) يتجاوز يساوي () طريقة فئة الكائن.
الحصول على الحجم () الملخص العام int getSize() تقوم بإرجاع حجم Tuple.
الحصول على قيمة() java.lang.Object getValue(int pos) النهائي العام احصل على القيمة في موضع محدد في الصف. يجب أن تقوم هذه الطريقة بإرجاع الكائن، لذا باستخدامها ستفقد أمان الكتابة الذي تحصل عليه مع getValueX() طُرق.
رمز التجزئة () hashCode النهائي العام () تقوم بإرجاع رمز التجزئة للسلسلة. إنه يتجاوز رمز التجزئة () طريقة فئة الكائن.
دليل ل() مؤشر int النهائي العام (java.lang.Object value) تقوم بإرجاع الفهرس ضمن هذه السلسلة للتواجد الأول للسلسلة الفرعية المحددة.
مكرر () java.util.Iterator iterator() النهائي العام تقوم بإرجاع مكرر فوق العناصر الموجودة في هذه المجموعة بالتسلسل الصحيح.
مؤشر الفهرس الأخير () العام النهائي int lastIndexOf (java.lang.Object value) تقوم بإرجاع الفهرس ضمن هذه السلسلة للتواجد الأخير للسلسلة الفرعية المحددة.
لمجموعة() java.lang.Object[] toArray() النهائي العام يقوم بتحويل الصفوف إلى مصفوفة.
إلى سلسلة() java.lang.String toString () النهائي العام تقوم بإرجاع تمثيل سلسلة للكائن. يتجاوز طريقة toString() لفئة الكائن.
لإدراج() java.util.List toList() النهائي العام يقوم بتحويل Tuple إلى قائمة.

الفئات الفرعية المعروفة المباشرة

حجم الصفوف اسم فئة Tuple مثال
عنصر واحد وحدة وحدة
عنصرين زوج زوج
ثلاثة عناصر ثلاثية ثلاثية
أربعة عناصر الرباعية الرباعية
خمسة عناصر الخماسية الخماسية
ستة عناصر السداسية السداسية
سبعة عناصر سبعة سبعة
ثمانية عناصر ثماني ثماني
تسعة عناصر إينيد إينيد
عشرة عناصر عقد عقد

إلى جانب الفئات المذكورة أعلاه، هناك فئتان إضافيتان توفرهما مكتبة javatuples، أي. قيمة المفتاح و قيمة التسمية . هاتان الفئتان متشابهتان زوج فئة وتوفر نفس الوظيفة ولكن في دلالات مختلفة.

تنفذ كل فئة Tuple الواجهات الثلاث التالية:

مشتق جزئي من اللاتكس
  • متوقعة
  • قابلة للمقارنة
  • قابل للتسلسل

تنفيذ Tuple

إن تنفيذ Tuple في Java سهل للغاية. يتعين علينا إنشاء مثيل لفئة Tuple التي تتوافق مع الحجم.

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

انتاج:

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

عمليات التوبل

يمكن تنفيذ العمليات التالية على Tuple:

  • إنشاء Tuple
  • الحصول على القيم
  • تحديد القيم
  • إضافة عناصر
  • التكرار على Tuple
  • تحويل Tuple إلى قائمة
  • البحث في Tuple

إنشاء Tuple

هناك ثلاث طرق لإنشاء Tuple:

  • باستخدام طريقة with()
  • باستخدام المنشئ
  • باستخدام المجموعة

دعونا نرى الطرق الثلاث المذكورة أعلاه لإنشاء صف.

باستخدام طريقة with()

توفر مكتبة javatuples مع() الطريقة التي تنشئ صفًا بالقيم المحددة. الطريقة تابعة ل org.javatuples.Pair طَرد. يتم استخدامه لإنشاء كائنات ذات قيم.

بناء الجملة:

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

مثال:

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

ينشئ كائن فئة الزوج أعلاه صفًا بقيمتين. لنقم بإنشاء برنامج Java لنفسه.

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

انتاج:

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

لنقم بإنشاء برنامج Java لإنشاء صف باستخدام المُنشئ.

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

انتاج:

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

باستخدام المجموعة

تتيح لنا مكتبة javatuples إنشاء صف من المجموعة باستخدام ملف من المجموعة () طريقة. كما يسمح لنا بإنشاء صف من مصفوفة باستخدام منصفيف () طريقة. لاحظ أن المجموعة/المصفوفة يجب أن يكون لها نفس النوع والقيم مثل المجموعة.

يجب أن يكون للمجموعة/المصفوفة نفس نوع Tuple ويجب أن يتطابق عدد القيم في المجموعة/المصفوفة مع فئة Tuple.

بناء الجملة:

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

مثال:

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

انتاج:

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

الحصول على القيم

تتيح لنا مكتبة javatuples أيضًا جلب القيم من المجموعة في الفهرس المحدد باستخدام ملف getValueX() طريقة. حيث تشير X إلى قيمة الفهرس للكائن. الفهرسة تبدأ من 0.

مثال:

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

انتاج:

 [Andrew] 

تعيين القيم

كما ناقشنا أعلاه، فإن الصفوف غير قابلة للتغيير. وبالتالي، لا يمكن تعديلها بعد إنشائها. للتغلب على المشكلة، توفر مكتبة javatuples setValueX() طريقة. حيث X هي قيمة الفهرس التي نريد تعيين القيمة المحددة عندها. تقوم الطريقة بإنشاء نسخة من الصف بالقيمة المضافة حديثًا في الفهرس المحدد وإرجاع نفس الصف.

مثال:

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

انتاج:

 [67, 68] 

إضافة قيمة

هناك طريقتان لإضافة القيم في Tuple:

ما هي أبعاد شاشة الكمبيوتر الخاص بي
  • في نهاية الصفوف
  • في مؤشر محدد

في نهاية التوبل

توفر مكتبة javatuples يضيف() طريقة لإضافة كائنات إلى Tuple. يضيف الكائن في نهاية الصف ويعيد صفًا جديدًا عن طريق مطابقة عدد العناصر.

لنفترض أن لدينا صفًا يحتوي على عنصرين ونريد إضافة عنصر آخر إلى الصف. في مثل هذه الحالة، لن يدعم الصفوف الزوجية العنصر الثالث. لذلك، عندما نضيف عنصرًا إلى صف مزدوج، يتم تحويله إلى صف ثلاثي. دعونا نرى مثالا.

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

انتاج:

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

يمكننا أيضًا إضافة صف واحد إلى صف آخر. فهو يزيد من عدد العناصر في المجموعة التي تم إنشاؤها حديثًا. ومن ثم، فإنها تُرجع نوع الصف بناءً على عدد العناصر الموجودة بعد الإضافة.

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

انتاج:

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

في الفهرس المحدد

بشكل افتراضي، تتم إضافة عناصر جديدة في نهاية الصف. ولكن يمكننا إضافة عناصر في الفهرس المحدد باستخدام إضافة () طريقة.

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

انتاج:

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

البحث عن عنصر

يمكننا أيضًا البحث عن عنصر موجود في الصف. للبحث في مكتبة javatuples توفر يتضمن() طريقة فئة Tuple. تقوم بإرجاع قيمة منطقية حقيقي إذا كان العنصر موجودًا، فسيتم إرجاعه خطأ شنيع . دعونا نرى مثالا.

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

انتاج:

 true false 

تحويل Tuple إلى مجموعة أو صفيف

تحتوي كل فئة صفية على أساليب asList() وtoArray() التي تُرجع القائمة والمصفوفة على التوالي. دعونا نرى مثالا.

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

انتاج:

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

لاحظ أن الصف يمكن أن يحتوي على أنواع غير متجانسة وبالتالي فإن النوع الناتج سيكون من قائمة أو هدف[] وفقاً لذلك.

التكرار على Tuple

تقوم جميع فئات Tuple بتنفيذ متوقعة واجهه المستخدم. لذا، يمكننا تكرار الصف بنفس طريقة تكرار المجموعات أو المصفوفات.

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

انتاج:

 Dell 5600.0 34 Digital Solutions 

الصفوف مقابل. القائمة/المصفوفة

جافا توبل
مترابطة بيانية قائمة
إنها مجموعة من القيم المفصولة بفواصل والمحاطة بها أقواس . إنها مجموعة من القيم المفصولة بفواصل والمحاطة بها أقواس مربعة .
الأقواس هي خياري . بين قوسين مربعين هي إلزامي .
إنها غير قابل للتغيير . إنها متقلب .
يتطلب أقل ذاكرة. يتطلب المزيد من الذاكرة.
لقد أقل طرق المصنع . لقد أكثر طرق المصنع .
لديها مُثَبَّت طول. لقد عامل أطوال.
يخزن غير متجانسة بيانات. يخزن متجانس بيانات.
انها مناسبة ل كبير كميات من البيانات. انها مناسبة ل صغير كمية البيانات.
يمكن تخزينه في قائمة . يمكن تخزينه داخل مترابطة بيانية .
إنها أسرع بالمقارنة مع القائمة. إنها أبطأ بالمقارنة مع الصفوف.
يتم تمثيله ك t1 = (1، 2، 3، 4، 5) يتم تمثيله ك l1 = [1، 2، 3، 4، 5]