Arrays.sort() في جافا

Arrays.sort() في جافا
جربه على ممارسة GfG

يتم استخدام طريقة Arrays.sort() في Java لفرز عناصر المصفوفة.

  • يوفر خيارات مرنة لفرز المصفوفات الفرعية بأكملها أو حتى الكائنات المخصصة باستخدام المقارنات.
  • يمكن فرز كل من المصفوفات البدائية (int char وما إلى ذلك) ومصفوفات الكائنات (سلسلة صحيحة وما إلى ذلك).

مثال: فرز الأعداد الصحيحة ومصفوفات الأحرف بترتيب تصاعدي

Java
   import     java.util.Arrays  ;   class   Geeks  {          public     static     void     main  (  String  []     args  )     {      // Integer array      int  []     arr1     =     {  2       -  1       3       4  };      // Character array      char  []     arr2     =     {  'b'       'a'       'c'       'b'  };      // Sorting arrays in ascending order      Arrays  .  sort  (  arr1  );         Arrays  .  sort  (  arr2  );      // Print sorted arrays      System  .  out  .  println  (  Arrays  .  toString  (  arr1  ));         System  .  out  .  println  (  Arrays  .  toString  (  arr2  ));      }   }   

الإخراج
[-1 2 3 4] [a b b c]  

توضيح:



  • تقوم الدالة Arrays.sort()‎ بإعادة ترتيب العناصر بترتيب تصاعدي.
  • لا تتم إزالة التكرارات.
  • لا يمكن للصفائف البدائية استخدام مقارنات مخصصة.

بناء جملة طريقة Arrays.sort()

1. لفرز المصفوفة بأكملها

Arrays.sort(); 

2. لفرز مجموعة فرعية

فرز الفراغ الثابت العام (int[] arr int from_Index int to_Index) ؛

حدود:

  • وصول : المصفوفة المراد فرزها.
  • من_الفهرس: فهرس العنصر الأول (الشامل) المراد فرزه.
  • to_Index : فهرس العنصر الأخير (حصريا) المراد فرزه.
  • نوع الإرجاع: باطلة (هذه الطريقة لا تُرجع أي شيء).

ملحوظة:

  • لا يقوم Arrays.sort() بإزالة التكرارات؛ فهو يعيد ترتيب العناصر فقط.
  • لا يمكن للأنواع البدائية استخدام مقارنات مخصصة؛ يتم الفرز بالترتيب الطبيعي (التصاعدي).

مثال: فرز المصفوفة الفرعية

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

Java
   import     java.util.Arrays  ;   public     class   Geeks  {          public     static     void     main  (  String  []     args  ){      int  []     arr     =     {  2       -  1       4       3  };      // Sort elements from index 1 to 3      Arrays  .  sort  (  arr       1       4  );      // Print array after sorting subarray      System  .  out  .  println  (  Arrays  .  toString  (  arr  ));      }   }   

الإخراج
[2 -1 3 4]  

توضيح: يتم فرز العناصر الموجودة في الفهارس 1 و2 و3 فقط؛ يبقى العنصر الموجود في الفهرس 0 دون تغيير.

الترتيب التنازلي

لفرز مصفوفة بترتيب تنازلي يمكننا استخدام طريقة Arrays.sort() مع Collections.reverseOrder() كمقارنة.

Java
   import     java.util.Arrays  ;   import     java.util.Collections  ;   public     class   Geeks  {      public     static     void     main  (  String  []     args  )     {      // Integer array      Integer  []     arr     =     {  2       -  1       3       4  };      Arrays  .  sort  (  arr       Collections  .  reverseOrder  ());         System  .  out  .  println  (  Arrays  .  toString  (  arr  ));         // String array      String  []     str     =     {  'Hii'       'Vishnu'       'chauhan'  };      Arrays  .  sort  (  str       Collections  .  reverseOrder  ());         System  .  out  .  println  (  Arrays  .  toString  (  str  ));      }   }   

الإخراج
[4 3 2 -1] [chauhan Vishnu Hii]  

توضيح:

  • يعمل على صفائف الكائنات فقط؛ الأنواع البدائية (int) لا يمكنها استخدام المقارنات.
  • بالنسبة للسلاسل النصية، يتم فرزها معجميًا من Z -> A.

فرز مخصص مع المقارنة

يمكننا فرز مجموعة من الكائنات عن طريق تحديد منطق الفرز المخصص بمساعدة استخدام  واجهة المقارنة .

Java
   import     java.util.*  ;   // Custom class   class   Student  {          int     roll  ;      String     name  ;      String     address  ;      Student  (  int     roll       String     name       String     address  ){          this  .  roll     =     roll  ;      this  .  name     =     name  ;      this  .  address     =     address  ;      }      // Print student details      public     String     toString  ()     {      return     roll     +     ' '     +     name     +     ' '     +     address  ;      }   }   // Comparator to sort by roll number   class   SortByRoll     implements     Comparator   <  Student  >  {          public     int     compare  (  Student     s1       Student     s2  ){          return     s1  .  roll     -     s2  .  roll  ;      }   }   class   Geeks     {      public     static     void     main  (  String  []     args  ){      Student  []     students     =     {      new     Student  (  1       'Ram'       'MP'  )      new     Student  (  2       'Shyam'       'UP'  )      new     Student  (  3       'Hari'       'Delhi'  )      };      // Sort using custom comparator      Arrays  .  sort  (  students       new     SortByRoll  ());      // Print sorted students      for     (  Student     s     :     students  )      System  .  out  .  println  (  s  );      }   }   

الإخراج
1 Ram MP 2 Shyam UP 3 Hari Delhi  

توضيح:

  • يسمح المقارن بمنطق الفرز المخصص دون تعديل الفئة.
  • هنا يتم فرز الطلاب حسب رقم الجلوس.

الفرز الطبيعي مع واجهة قابلة للمقارنة

في المثال أدناه، نقوم بفرز مجموعة من كائنات الطالب بناءً على أسمائها أبجديًا.

Java
   import     java.util.Arrays  ;   class   Student     implements     Comparable   <  Student  >  {          int     r  ;      String     n  ;      String     a  ;      // Constructor      public     Student  (  int     r       String     n       String     a  ){          this  .  r     =     r  ;      this  .  n     =     n  ;      this  .  a     =     a  ;      }      // compareTo method to sort by name      public     int     compareTo  (  Student     o  ){          return     this  .  n  .  compareTo  (  o  .  n  );      }      // toString() method to print Student details      public     String     toString  ()     {      return     this  .  r     +     ' '     +     this  .  n     +     ' '     +     this  .  a  ;      }   }   public     class   Geeks  {          public     static     void     main  (  String  []     args  ){          Student  []     s     =     {      new     Student  (  1       'Ram'       'UP'  )      new     Student  (  2       'Shyam'       'MP'  )      new     Student  (  3       'Hari'       'Bihar'  )      };      // Sorting students by name in alphabetical order      Arrays  .  sort  (  s  );      for     (  Student     student     :     s  )      System  .  out  .  println  (  student  );      }   }   

الإخراج
3 Hari Bihar 1 Ram UP 2 Shyam MP  

توضيح:

  • في هذا المثال نستخدم واجهة قابلة للمقارنة لتحديد الترتيب الطبيعي لكائنات الطالب.
  • من خلال تنفيذ الطريقة، نحدد كيفية مقارنة كائنين للطالب عن طريق تمكين الفرز بناءً على اسم الطالب.

هذا يسمح لنا باستخدام طريقة Arrays.sort() مباشرة على مجموعة من كائنات الطالب لفرزها بالترتيب وهنا لا نحتاج إلى مقارنة منفصلة.

إنشاء اختبار

مقالات العلوي

فئة

مقالات مثيرة للاهتمام