ב-Java, אוסף היא מסגרת המספקת ממשקים ( קבע, רשימה, תור, וכו') וכיתות ( ArrayList, LinkedList, וכו') כדי לאחסן את קבוצת החפצים. מחלקות אלו מאחסנות נתונים בצורה לא מסודרת. לפעמים אנחנו צריכים לסדר נתונים בצורה מסודרת המכונה מִיוּן . המיון יכול להתבצע בשתי דרכים או ב עולה אוֹ יורד להזמין.
בחלק זה נלמד כיצד למיין ArrayList בעלייה ו סדר יורד.
רשימת מערך
ב Java , רשימת מערך הוא מחלקה של מסגרת אוספים המוגדרת ב-java.utilחֲבִילָה. זה יורש את המחלקה AbstractList. זה מאחסן באופן דינמי את האלמנטים. היתרון של ArrayList הוא שאין לו מגבלת גודל. זה גמיש יותר מהמערך המסורתי. ייתכן שיש בו רכיבים כפולים. אנחנו יכולים גם להשתמש בכל השיטות של ממשק List מכיוון שהוא מיישם את רשימה מִמְשָׁק.
אנחנו יכולים למיין ArrayList בשתי דרכים בסדר עולה ויורד. המחלקה Collections מספקת שתי שיטות למיין ArrayList ב-Java.
שיטת Collections.sort()
ניתן למיין ArrayList על ידי שימוש ב- סוג() שיטת ה שיעור אוספים ב-Java . הוא מקבל אובייקט של ArrayList כפרמטר למיון ומחזיר ArrayList ממוין בסדר עולה לפי הסדר הטבעי של האלמנטים שלו.
np.unique
תחביר
public static <t extends comparable> void sort(List list) </t>
זכור: כל האלמנטים ב-ArrayList חייבים להיות ניתנים להשוואה הדדית, אחרת הוא זורק ClassCastException. כאן, השוואת הדדית פירושה שהרשימה חייבת לכלול את אותו סוג של אלמנטים. לדוגמה, שקול את קטע הקוד:
//creating an instance of ArrayList that contains String type elements ArrayList list = new ArrayList(); list.add('Computer'); list.add(123); list.add('Hard Disk'); list.add('DRAM');
בדוגמה שלמעלה, אנו רואים שלרשימה יש ארבעה אלמנטים מתוכם שלושה אלמנטים הם מסוג String ואחד הוא מסוג Integer. שלושת האלמנטים שנמצאים במחרוזת ניתנים להשוואה הדדית אך האלמנט שהוא מסוג Integer אינו בר השוואה לשלושת האחרים. לפיכך, הרשימה חייבת לכלול את אותו סוג של אלמנטים.
שיטת Collections.reverseOrder()
אם אנחנו רוצים למיין את ArrayList יורד להזמין, אוספי Java הכיתה מספקת בסדר הפוך() שיטה. זה מאפשר לנו למיין את ArrayList הפוך-לקסיקוגרפי להזמין.
תחביר
public static Comparator reverseOrder()
הוא מחזיר משווה שכופה את הסדר הטבעי ההפוך על אוסף אובייקטים המיישמים את ממשק Comparable.
זכור שאיננו מפעילים ישירות את שיטת reverseOrder() . אנו משתמשים בו יחד עם Collection.sort() השיטה, כדלקמן.
Collections.sort(objectOfArrayList, Collections.reverseOrder());
לכן, המיון של ArrayList בסדר יורד נעשה בשני שלבים, ראשית ה- ArrayList ממיין את הנתונים בסדר עולה, לאחר מכן הנתונים הממוינים הופכים על ידי ה- בסדר הפוך() שיטה.
בואו ניצור תוכניות שממיינות את ArrayList בסדר עולה.
סורק java
מיין ArrayList בסדר עולה
בדוגמה הבאה, יצרנו ArrayList מסוג String והוספנו לתוכה כמה אלמנטים. לאחר מכן הפעלנו את השיטה sort() של המחלקה Collections ועברנו את האובייקט של המחלקה ArrayList כלומר רשימה שממיינת את האלמנטים בסדר עולה.
SortArrayListExample1.java
import java.util.*; public class SortArrayListExample1 { public static void main(String args[]) { // creating object of ArrayList class ArrayList list = new ArrayList(); // adding elements to the ArrayList list.add('Volkswagen'); list.add('Toyota'); list.add('Porsche'); list.add('Ferrari'); list.add('Mercedes-Benz'); list.add('Audi'); list.add('Rolls-Royce'); list.add('BMW'); // printing the unsorted ArrayList System.out.println('Before Sorting: '+ list); // Sorting ArrayList in ascending Order Collections.sort(list); // printing the sorted ArrayList System.out.println('After Sorting: '+ list); } }
תְפוּקָה:
Before Sorting: [Volkswagen, Toyota, Porsche, Ferrari, Mercedes-Benz, Audi, Rolls-Royce, BMW] After Sorting: [Audi, BMW, Ferrari, Mercedes-Benz, Porsche, Rolls-Royce, Toyota, Volkswagen]
בוא נראה דוגמה נוספת שממיינת ArrayList מסוג אינטגר.
סוגי נתוני המשך
SortArrayListExample2.java
import java.util.*; public class SortArrayListExample2 { public static void main(String args[]) { //creating an object of ArrayList class ArrayList list = new ArrayList(); list.add(55); list.add(34); list.add(98); list.add(67); list.add(39); list.add(76); list.add(81); //printing ArrayList before sorting System.out.println('ArrayList Before Sorting:'); for(int marks: list) { System.out.println(marks); } //sorting ArrayList in ascending order Collections.sort(list); //printing ArrayList after sorting System.out.println('ArrayList After Sorting:'); for(int marks: list) { System.out.println(marks); } } }
תְפוּקָה:
ArrayList Before Sorting: 55 34 98 67 39 76 81 ArrayList After Sorting: 34 39 55 67 76 81 98
מיין ArrayList בסדר יורד
בדוגמה הבאה, יצרנו ArrayList מסוג String והוספנו לתוכה כמה אלמנטים. לאחר מכן הפעלנו את שיטת reverseOrder() יחד עם שיטת sort() של המחלקה Collections ועברנו את האובייקט של המחלקה ArrayList כלומר רשימה שממיינת את האלמנטים בסדר יורד.
SortArrayListExample3.java
import java.util.*; public class SortArrayListExample3 { public static void main(String args[]) { // creating object of ArrayList class ArrayList list = new ArrayList(); // adding elements to the ArrayList list.add('Data Science'); list.add('Testing'); list.add('C#'); list.add('Basic Language'); list.add('UML'); list.add('Algorithms '); list.add('Computer Networks'); list.add('Python'); // printing the unsorted ArrayList System.out.println('Before Sorting: '+ list); // Sorting ArrayList in ascending Order // using Collection.sort() method Collections.sort(list, Collections.reverseOrder()); // Print the sorted ArrayList System.out.println('After Sorting: '+ list); } }
תְפוּקָה:
Before Sorting: [Data Science, Testing, C#, Basic Language, UML, Algorithms, Computer Networks, Python] After Sorting: [UML, Testing, Python, Data Science, Computer Networks, C#, Basic Language, Algorithms]
SortArrayListExample4.java
import java.util.*; public class SortArrayListExample4 { public static void main(String args[]) { //creating an object of ArrayList class ArrayList list = new ArrayList(); list.add(566); list.add(230); list.add(123); list.add(110); list.add(689); list.add(12); list.add(95); //printing ArrayList before sorting System.out.println('ArrayList Before Sorting:'); for(int marks: list) { System.out.println(marks); } //sorting ArrayList in descending order Collections.sort(list, Collections.reverseOrder()); //printing ArrayList after sorting System.out.println('ArrayList After Sorting:'); for(int marks: list) { System.out.println(marks); } } }
תְפוּקָה:
ArrayList Before Sorting: 566 230 123 110 689 12 95 ArrayList After Sorting: 689 566 230 123 110 95 12