Метод 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) ;
Параметри:
- обр : Масив для сортування.
- з_індексу: Індекс першого елемента (включно), який буде відсортовано.
- 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() як компаратор.
Javaimport 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) не можуть використовувати компаратори.
- For Strings сортує лексикографічно від Z -> A.
Спеціальне сортування з компаратором
Ми можемо відсортувати масив об’єктів, визначивши спеціальну логіку сортування за допомогою Інтерфейс компаратора .
Javaimport 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
Пояснення:
- Компаратор дозволяє користувацьку логіку сортування без зміни класу.
- Тут учні сортуються за номером списку.
Природне сортування з порівнянним інтерфейсом
У наведеному нижче прикладі ми сортуємо масив об’єктів Student за їх іменами в алфавітному порядку.
Javaimport 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.
- Реалізуючи метод, ми вказуємо, як порівнювати два об’єкти Student, увімкнувши сортування на основі імені студента.
Це дозволяє нам використовувати метод Arrays.sort() безпосередньо для масиву об’єктів Student, щоб сортувати їх у порядку, і тут нам не потрібен окремий компаратор.