Методът 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.
Персонализирано сортиране с Comparator
Можем да сортираме масив от обекти, като дефинираме персонализирана логика за сортиране с помощта на Интерфейс за сравнение .
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
Обяснение:
- Comparator позволява персонализирана логика за сортиране без промяна на класа.
- Тук учениците са сортирани по номера на списъка.
Естествено сортиране със сравним интерфейс
В примера по-долу сортираме масив от обекти 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, за да ги сортираме в ред и тук не се нуждаем от отделен компаратор.