Arrays.sort() ב-Java
השיטה Arrays.sort() ב-Java משמשת למיון האלמנטים של מערך.
- הוא מספק אפשרויות גמישות למיון של מערכי משנה של מערכים או אפילו אובייקטים מותאמים אישית באמצעות השוואות.
- יכול למיין גם מערכים פרימיטיביים (int char וכו') וגם מערכי אובייקט (Integer String וכו').
דוּגמָה: מיון מערכי מספרים שלמים ותווים בסדר עולה
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. כדי למיין מערך משנה
public static void sort(int[] arr int from_Index int to_Index) ;
פרמטרים:
- arr : המערך שיש למיין.
- from_Index: האינדקס של האלמנט הראשון (כולל) שיש למיין.
- to_Index : האינדקס של האלמנט האחרון (בלעדי) שיש למיין.
- סוג החזרה: void (שיטה זו לא מחזירה כלום).
פֶּתֶק:
- 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.
מיון מותאם אישית עם Comparator
אנו יכולים למיין מערך של אובייקטים על ידי הגדרת היגיון מיון מותאם אישית בעזרת שימוש ב- ממשק השוואה .
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
הֶסבֵּר:
- Comparator מאפשר לוגיקת מיון מותאמת אישית מבלי לשנות את המחלקה.
- כאן התלמידים ממוינים לפי מספר גליל.
מיון טבעי עם ממשק דומה
בדוגמה שלהלן אנו ממיינים מערך של אובייקטים של סטודנטים על סמך שמם בסדר אלפביתי.
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
הֶסבֵּר:
- בדוגמה זו אנו משתמשים ב- ממשק בר השוואה כדי להגדיר סדר טבעי עבור חפצי הסטודנט.
- על ידי יישום השיטה אנו מציינים כיצד יש להשוות בין שני אובייקטי Student על ידי הפעלת מיון על סמך שם התלמיד.
זה מאפשר לנו להשתמש בשיטת Arrays.sort() ישירות על מערך של אובייקטי Student כדי למיין אותם לפי סדר וכאן אנחנו לא צריכים השוואת נפרדת.
צור חידון