NavigableSet في جافا

NavigableSet في جافا

في جافا 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 المتعلق بالمجموعات.

NavigableSet-in-Java-with-Examples

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

طريقة وصف
الموازي () يُرجع دفقًا متوازيًا محتملًا مع هذه المجموعة كمصدر له.
إزالة إذا (المسند فلتر) يزيل كافة عناصر هذه المجموعة التي تلبي المسند المحدد.
تدفق() إرجاع دفق متسلسل مع هذه المجموعة كمصدر لها.
toArray؟(IntFunction مولد) تقوم بإرجاع مصفوفة تحتوي على جميع العناصر الموجودة في هذه المجموعة باستخدام وظيفة المولد المتوفرة لتخصيص المصفوفة التي تم إرجاعها.

الطرق المعلنة في الواجهة java.lang.Iterable

طريقة وصف
لكل (المستهلك فعل) ينفذ الإجراء المحدد لكل عنصر من عناصر Iterable حتى تتم معالجة جميع العناصر أو يلقي الإجراء استثناءً.


إنشاء اختبار