في جافا NaviableSet هو نوع فرعي من SortedSet واجهة. يسمح لنا بإجراء عمليات مختلفة مثل الحصول على أقرب التطابقات لتكرار الترتيب التنازلي لعنصر معين وغيرها. ويوفر طرقًا للتنقل عبر العناصر الموجودة في المجموعة.
على سبيل المثال تسمح لنا واجهة NavigableSet بالتنقل عبر المجموعة بترتيب تصاعدي وتنازلي على عكس SortedSet الذي يدعم الترتيب التصاعدي فقط. الفئات التي تنفذ واجهة NavigableSet هي TreeSet و ConcurrentSkipListSet
- يقوم NavigableSet بتوسيع SortedSet وبالتالي يوفر طرقًا مثل first() last() headSet() tailSet() وما إلى ذلك.
- يسمح لك بالتنقل في كلا الاتجاهين بترتيب تصاعدي وتنازلي
- التطبيق الأكثر شيوعًا لـ NavigableSet هو TreeSet.
مثال: يوضح هذا المثال إنشاء NavigableSet باستخدام TreeSet وإضافة عناصر إليه والتي تقوم بفرزها تلقائيًا بترتيب تصاعدي.
Java
// Java program to demonstrates // the working of NavigableSet import java.util.*; public class Geeks { public static void main(String[] args) { NavigableSet<Integer> ns = new TreeSet<>(); // Add elements to the set ns.add(10); ns.add(20); ns.add(30); ns.add(40); ns.add(50); System.out.println('Navigable Set: ' + ns); } }
الإخراج
Navigable Set: [10 20 30 40 50]
كم مدينة في الولايات المتحدة الأمريكية
يوضح الرسم البياني أدناه بنية الميراث في إطار عمل مجموعة Java المتعلق بالمجموعات.
TreeSet هي فئة يتم تنفيذها NaviableSet والذي بدوره يمتد SortedSet الذي يمتد تعيين .
إعلان NavigableSet
في Java، يمكن الإعلان عن NavigableSet على النحو التالي:
NaviableSet
setName;
ملحوظة: ' "النوع" هو نوع العنصر في المجموعة (على سبيل المثال، سلسلة صحيحة وما إلى ذلك) وsetName هو اسم المتغير.
إنشاء كائنات NavigableSet
لا يمكننا إنشاء NavigableSet مباشرة لأنها واجهة. بدلا من ذلك نستخدم فئة مثل TreeSet الذي ينفذها. بمساعدة الأدوية العامة يمكننا تحديد نوع الكائنات التي ستخزنها المجموعة. يمكن تعريف مجموعة النوع الآمن هذه على النحو التالي:
NaviableSet
set = TreeSet الجديد ()؛
مثال: يوضح هذا المثال كيفية استخدام طرق مختلفة لـ NavigableSet مثل descedingSet() tailSet() Lower() pollFirst() و pollLast() لمعالجة مجموعة مفروزة والتنقل فيها بالترتيب العادي والعكسي.
Java// Java Program to demostrates the // working of various methods of NavigableSet import java.util.NavigableSet; import java.util.TreeSet; public class Geeks { public static void main(String[] args) { NavigableSet<Integer> ns = new TreeSet<>(); ns.add(0); ns.add(1); ns.add(2); ns.add(3); ns.add(4); ns.add(5); ns.add(6); // Get a reverse view of the navigable set NavigableSet<Integer> revNs = ns.descendingSet(); // Print the normal and reverse views System.out.println('Normal order: ' + ns); System.out.println('Reverse order: ' + revNs); NavigableSet<Integer> t = ns.tailSet(3 true); System.out.println('3 or more: ' + t); System.out.println('lower(3): ' + ns.lower(3)); System.out.println('floor(3): ' + ns.floor(3)); System.out.println('higher(3): ' + ns.higher(3)); System.out.println('ceiling(3): ' + ns.ceiling(3)); System.out.println('pollFirst(): ' + ns.pollFirst()); System.out.println('Navigable Set: ' + ns); System.out.println('pollLast(): ' + ns.pollLast()); System.out.println('Navigable Set: ' + ns); System.out.println('pollFirst(): ' + ns.pollFirst()); System.out.println('Navigable Set: ' + ns); System.out.println('pollFirst(): ' + ns.pollFirst()); System.out.println('Navigable Set: ' + ns); System.out.println('pollFirst(): ' + ns.pollFirst()); System.out.println('Navigable Set: ' + ns); System.out.println('pollFirst(): ' + ns.pollFirst()); System.out.println('pollLast(): ' + ns.pollLast()); } }
الإخراج:
الخط اللاتكس
إجراء عمليات مختلفة على NavigableSet
1. إضافة العناصر: يمكننا استخدام يضيف() طريقة لإدراج عناصر في NavigableSet. يتم تخزين العناصر بالترتيب الذي تم فرزه ولا يُسمح بالتكرارات ولا يتم قبول القيم الخالية أيضًا بواسطة NavigableSet.
مثال: يوضح هذا المثال إضافة عناصر إلى NavigableSet باستخدام add() حيث يتم تجاهل التكرارات ويتم فرز العناصر بترتيب تصاعدي.
Java// Java Program to demonstrates the working of add() import java.util.*; import java.io.*; class Geeks { public static void main(String[] args) { NavigableSet<String> ts = new TreeSet<String>(); // Elements are added using add() method ts.add('A'); ts.add('B'); ts.add('C'); ts.add('A'); System.out.println('NavigableSet: ' + ts); } }
الإخراج
NavigableSet: [A B C]
2. الوصول إلى العناصر: بعد إضافة العناصر، إذا أردنا الوصول إلى العناصر، يمكننا استخدام أساليب يحمل في ثناياه عوامل مثل يتضمن() أولاً() آخر() إلخ.
مثال: يوضح هذا المثال إضافة عناصر إلى NavigableSet للتحقق من وجود العنصر واسترداد العنصرين الأول والأخير.
Java// Java program to demonstrates the // working of contains() first() and last() method import java.util.*; import java.io.*; class Geeks { public static void main(String[] args) { NavigableSet<String> ts = new TreeSet<String>(); // Elements are added using add() method ts.add('A'); ts.add('B'); ts.add('C'); ts.add('A'); System.out.println('NavigableSet: ' + ts); String s = 'D'; // Check if the above string exists in // the NavigableSet or not System.out.println('D exists in the NavigableSet?: ' + ts.contains(s)); // Print the first element in // the NavigableSet System.out.println('First Element of NavigableSet: ' + ts.first()); // Print the last element in // the NavigableSet System.out.println('Last Element of NavigableSet: ' + ts.last()); } }
الإخراج
NavigableSet: [A B C] D exists in the NavigableSet?: false First Element of NavigableSet: A Last Element of NavigableSet: C
3. إزالة العناصر: يمكن إزالة القيم من NavigableSet باستخدام الملف يزيل() إستطلاع أول () آخر استطلاع () .
مثال: يوضح هذا المثال إزالة العناصر من NavigableSet.
عمر ريخاJava
// Java Program to demonstrates the working of remove() // pollFirst() and pollLast() method import java.io.*; import java.util.*; class Geeks { public static void main(String[] args) { NavigableSet<String> ts = new TreeSet<String>(); // Elements are added using add() method ts.add('A'); ts.add('B'); ts.add('C'); ts.add('B'); ts.add('D'); ts.add('E'); System.out.println('NavigableSet: ' + ts); // Removing the element b ts.remove('B'); System.out.println('After removing element ' + ts); // Remove the First element of TreeSet ts.pollFirst(); System.out.println( 'After the removal of First Element ' + ts); // Remove the Last element of TreeSet ts.pollLast(); System.out.println( 'After the removal of Last Element ' + ts); } }
الإخراج
NavigableSet: [A B C D E] After removing element [A C D E] After the removal of First Element [C D E] After the removal of Last Element [C D]
4. العناصر التكرارية: هناك طرق مختلفة للتكرار من خلال NavigableSet. الأكثر شهرة هو استخدام معززة للحلقة.
مثال: يوضح هذا المثال إضافة عناصر إلى NavigableSet والتكرار فيها بترتيب تصاعدي.
مؤشر جافاJava
// Java Program to iterate through NavigableSet import java.util.*; import java.io.*; class Geeks { public static void main(String[] args) { NavigableSet<String> ts = new TreeSet<String>(); // Elements are added using add() method ts.add('C'); ts.add('D'); ts.add('E'); ts.add('A'); ts.add('B'); ts.add('Z'); // Iterating though the NavigableSet for (String i : ts) System.out.print(i + ' '); } }
الإخراج
A B C D E Z
طُرق
فيما يلي الطرق الموجودة في واجهة NavigableSet.
طُرق | وصف |
|---|---|
| السقف (ه ه) | إرجاع أقل عنصر في هذه المجموعة أكبر من أو يساوي العنصر المحدد أو null إذا لم يكن هناك مثل هذا العنصر. |
| تنازليالمكرر () | يُرجع مُكرِّرًا على العناصر الموجودة في هذه المجموعة بترتيب تنازلي. |
| مجموعة تنازلية () | تقوم بإرجاع عرض ترتيب عكسي للعناصر الموجودة في هذه المجموعة. |
| الطابق (ه ه) | إرجاع العنصر الأكبر في هذه المجموعة أقل من أو يساوي العنصر المحدد أو null إذا لم يكن هناك مثل هذا العنصر. |
| مجموعة الرأس (E toElement) | يُرجع عرضًا لجزء هذه المجموعة الذي تكون عناصره أقل تمامًا من toElement. |
| headSet(E toElement منطقي شامل) | يُرجع عرضًا لجزء هذه المجموعة الذي تكون عناصره أقل من (أو تساوي إذا كان الشمول صحيحًا) إلىElement. |
| أعلى(ه ه) | تُرجع أقل عنصر في هذه المجموعة بشكل أكبر من العنصر المحدد أو تُرجع قيمة خالية إذا لم يكن هناك مثل هذا العنصر. |
| مكرر () | يُرجع مُكرِّرًا على العناصر الموجودة في هذه المجموعة بترتيب تصاعدي. |
| أقل(ه ه) | تُرجع العنصر الأكبر في هذه المجموعة بدقة أقل من العنصر المحدد أو تُرجع قيمة خالية إذا لم يكن هناك مثل هذا العنصر. |
| إستطلاع أول () | استرداد وإزالة العنصر الأول (الأدنى) أو إرجاع قيمة فارغة إذا كانت هذه المجموعة فارغة. |
| آخر استطلاع () | يسترد ويزيل العنصر الأخير (الأعلى) أو يُرجع قيمة فارغة إذا كانت هذه المجموعة فارغة. |
مجموعة فرعية (E fromElement boolean fromInclusive E إلى العنصر المنطقي إلى Inclusive) | يُرجع عرضًا لجزء هذه المجموعة الذي تتراوح عناصره من fromElement إلى toElement. |
| مجموعة فرعية (E fromElement E toElement) | يُرجع عرضًا لجزء هذه المجموعة الذي تتراوح عناصره من العنصر الشامل إلى العنصر الحصري. |
| مجموعة الذيل (E من العنصر) | يُرجع عرضًا لجزء هذه المجموعة الذي تكون عناصره أكبر من أو تساوي fromElement. |
| tailSet(E fromElement منطقي شامل) | تُرجع عرضًا لجزء هذه المجموعة الذي تكون عناصره أكبر من (أو تساوي إذا كان الشمول صحيحًا) fromElement. |
الأساليب الموروثة من واجهة java.util.SortedSet
طريقة | وصف |
|---|---|
| المقارنة () | تقوم هذه الطريقة بإرجاع المقارنة المستخدمة لترتيب العناصر في هذه المجموعة أو إرجاعها فارغة إذا كانت هذه المجموعة تستخدم الترتيب الطبيعي لعناصرها. |
| أولاً() | تقوم هذه الطريقة بإرجاع العنصر الأول (الأدنى) الموجود في هذه المجموعة. |
| آخر() | تقوم هذه الطريقة بإرجاع العنصر الأخير (الأعلى) الموجود في المجموعة. |
| الفاصل () | يقوم بإنشاء Spliterator فوق العناصر الموجودة في هذه المجموعة التي تم فرزها. |
الأساليب الموروثة من واجهة java.util.Set
طريقة | وصف |
|---|---|
| إضافة (عنصر) | تُستخدم هذه الطريقة لإضافة عنصر محدد إلى المجموعة. تضيف الدالة العنصر فقط إذا لم يكن العنصر المحدد موجودًا بالفعل في المجموعة وإلا فإن الدالة ترجع خطأ إذا كان العنصر موجودًا بالفعل في المجموعة. |
| إضافة الكل (مجموعة) | تُستخدم هذه الطريقة لإلحاق كافة العناصر من المجموعة المذكورة بالمجموعة الموجودة. تتم إضافة العناصر بشكل عشوائي دون اتباع أي ترتيب محدد. |
| واضح() | يتم استخدام هذه الطريقة لإزالة كافة العناصر من المجموعة ولكن لا يتم حذف المجموعة. المرجع للمجموعة لا يزال موجودا. |
| يحتوي على (عنصر) | تُستخدم هذه الطريقة للتحقق مما إذا كان هناك عنصر معين موجود في المجموعة أم لا. |
| يحتوي على الكل (مجموعة) | تُستخدم هذه الطريقة للتحقق مما إذا كانت المجموعة تحتوي على جميع العناصر الموجودة في المجموعة المحددة أم لا. جافا تعليمي ترجع هذه الطريقة صحيحًا إذا كانت المجموعة تحتوي على جميع العناصر وترجع خطأ إذا كان أي من العناصر مفقودًا. |
| يساوي () | يقارن الكائن المحدد مع هذه المجموعة من أجل المساواة. |
| رمز التجزئة () | تُستخدم هذه الطريقة للحصول على قيمة hashCode لهذا المثيل من Set. تقوم بإرجاع قيمة عددية وهي قيمة رمز التجزئة لهذا المثيل من المجموعة. |
| فارغ () | تُستخدم هذه الطريقة للتحقق مما إذا كانت NavigableSet فارغة أم لا. |
| إزالة (عنصر) | يتم استخدام هذه الطريقة لإزالة العنصر المحدد من المجموعة. تقوم هذه الطريقة بإرجاع True إذا كان العنصر المحدد موجودًا في المجموعة وإلا فإنها تُرجع خطأ. |
| إزالة الكل (مجموعة) | يتم استخدام هذه الطريقة لإزالة كافة العناصر الموجودة في المجموعة من المجموعة. ترجع هذه الطريقة صحيحًا إذا تغيرت هذه المجموعة نتيجة المكالمة. |
| الاحتفاظ بالكل (مجموعة) | تُستخدم هذه الطريقة للاحتفاظ بجميع عناصر المجموعة المذكورة في المجموعة المحددة. ترجع هذه الطريقة صحيحًا إذا تغيرت هذه المجموعة نتيجة المكالمة. |
| مقاس() | يتم استخدام هذه الطريقة للحصول على حجم المجموعة. يؤدي هذا إلى إرجاع قيمة عددية تشير إلى عدد العناصر. |
| toArray() | تُستخدم هذه الطريقة لتكوين مصفوفة من نفس العناصر الموجودة في المجموعة. |
| toArray(T[] أ) | إرجاع مصفوفة تحتوي على كافة العناصر الموجودة في هذه المجموعة؛ نوع وقت تشغيل المصفوفة التي تم إرجاعها هو نوع المصفوفة المحددة. |
الطرق المعلنة في واجهة java.util.Collection
| طريقة | وصف |
|---|---|
| الموازي () | يُرجع دفقًا متوازيًا محتملًا مع هذه المجموعة كمصدر له. |
| إزالة إذا (المسند super E>فلتر) | يزيل كافة عناصر هذه المجموعة التي تلبي المسند المحدد. |
| تدفق() | إرجاع دفق متسلسل مع هذه المجموعة كمصدر لها. |
| toArray؟(IntFunction | تقوم بإرجاع مصفوفة تحتوي على جميع العناصر الموجودة في هذه المجموعة باستخدام وظيفة المولد المتوفرة لتخصيص المصفوفة التي تم إرجاعها. |
الطرق المعلنة في الواجهة java.lang.Iterable
| طريقة | وصف |
|---|---|
| لكل (المستهلك super T>فعل) | ينفذ الإجراء المحدد لكل عنصر من عناصر Iterable حتى تتم معالجة جميع العناصر أو يلقي الإجراء استثناءً. |