في جافا، مجموعة هو إطار يوفر واجهات ( تعيين، قائمة، قائمة الانتظار، الخ) والفئات ( قائمة المصفوفات، القائمة المرتبطة، إلخ) لتخزين مجموعة الكائنات. تقوم هذه الفئات بتخزين البيانات بطريقة غير مرتبة. في بعض الأحيان نحتاج إلى ترتيب البيانات بطريقة مرتبة وهو ما يعرف باسم فرز . يمكن إجراء الفرز بطريقتين إما في تصاعدي أو تنازلي طلب.
في هذا القسم سوف نتعلم كيفية فرز ArrayList بشكل تصاعدي و تنازليا.
ArrayList
في جافا , ArrayList هي فئة من إطار عمل المجموعات التي تم تعريفها فيjava.utilطَرد. يرث فئة AbstractList. يقوم بتخزين العناصر بشكل حيوي. ميزة ArrayList هي أنه ليس لها حد للحجم. إنها أكثر مرونة من المصفوفة التقليدية. قد تحتوي على عناصر مكررة. يمكننا أيضًا استخدام جميع أساليب واجهة القائمة لأنها تنفذ قائمة واجهه المستخدم.
يمكننا فرز ArrayList بطريقتين تصاعديًا وتنازليًا. توفر فئة Collections طريقتين لفرز ArrayList في Java.
طريقة Collections.sort()
يمكن فرز ArrayList باستخدام نوع() طريقة فئة المجموعات في جافا . يقبل كائن ArrayList كمعلمة ليتم فرزه ويعيد ArrayList مرتبة بترتيب تصاعدي وفقًا للترتيب الطبيعي لعناصره.
الخريطة في الآلة الكاتبة
بناء الجملة
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. العناصر الثلاثة الموجودة في السلسلة قابلة للمقارنة بشكل متبادل ولكن العنصر من النوع الصحيح غير قابل للمقارنة مع العناصر الثلاثة الأخرى. وبالتالي، يجب أن تحتوي القائمة على نفس النوع من العناصر.
طريقة Collections.reverseOrder()
إذا أردنا فرز ArrayList في تنازلي طلب، مجموعات جافا يوفر الفصل ترتيب عكسي() طريقة. يسمح لنا بفرز ArrayList معجمي عكسي طلب.
بناء الجملة
public static Comparator reverseOrder()
تقوم بإرجاع مُقارن يفرض عكس الترتيب الطبيعي على مجموعة من الكائنات التي تنفذ الواجهة القابلة للمقارنة.
تذكر أننا لا نقوم باستدعاء طريقة عكسي () مباشرة. نحن نستخدمها جنبا إلى جنب مع مجموعة.فرز () الطريقة، على النحو التالي.
شجرة ثنائية
Collections.sort(objectOfArrayList, Collections.reverseOrder());
لذلك، يتم فرز ArrayList بترتيب تنازلي في خطوتين، أولاً تقوم ArrayList بفرز البيانات بترتيب تصاعدي، وبعد ذلك يتم عكس البيانات التي تم فرزها بواسطة ترتيب عكسي() طريقة.
لنقم بإنشاء برامج تقوم بفرز ArrayList بترتيب تصاعدي.
فرز ArrayList بترتيب تصاعدي
في المثال التالي، قمنا بإنشاء قائمة ArrayList من النوع String وأضفنا بعض العناصر إليها. بعد ذلك قمنا باستدعاء طريقة الترتيب () لفئة المجموعات وقمنا بتمرير كائن فئة 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 من نوع Integer.
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 وأضفنا بعض العناصر إليها. بعد ذلك قمنا باستدعاء طريقة عكس الترتيب () مع طريقة الفرز () لفئة المجموعات وقمنا بتمرير كائن فئة 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