Metoda Arrays.sort() u Javi koristi se za sortiranje elemenata niza.
- Pruža fleksibilne opcije za sortiranje čitavih nizova, podnizova ili čak prilagođenih objekata pomoću komparatora.
- Može sortirati i primitivne nizove (int char itd.) i objektne nizove (Integer String itd.).
Primjer: Sortiranje nizova cijelih brojeva i znakova uzlaznim redoslijedom
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)); } }
Izlaz
[-1 2 3 4] [a b b c]
Obrazloženje:
- Arrays.sort() mijenja redoslijed elemenata uzlaznim redoslijedom.
- Duplikati se ne uklanjaju.
- Primitivni nizovi ne mogu koristiti prilagođene komparatore.
Sintaksa metode Arrays.sort().
1. Za sortiranje cijelog niza
Nizovi.sort();
2. Za sortiranje podniza
public static void sort(int[] arr int from_Index int to_Index) ;
Parametri:
- arr : niz koji se sortira.
- iz_indeksa: Indeks prvog elementa (uključujući) koji se sortira.
- na_indeks : Indeks posljednjeg elementa (isključivo) koji se sortira.
- Vrsta povrata: void (ova metoda ne vraća ništa).
Bilješka:
- Arrays.sort() ne uklanja duplikate; samo reorganizira elemente.
- Primitivni tipovi ne mogu koristiti prilagođene komparatore; sortiranje je prirodnim (uzlaznim) redoslijedom.
Primjer : Sortiranje podniza
Možete razvrstati dio niza određivanjem početnog (uključivo) i krajnjeg (isključivo) indeksa.
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)); } }
Izlaz
[2 -1 3 4]
Obrazloženje: Razvrstavaju se samo elementi na indeksima 1 2 i 3; element s indeksom 0 ostaje nepromijenjen.
Sortiranje opadajućim redoslijedom
Za sortiranje niza silaznim redoslijedom možemo koristiti metodu Arrays.sort() s Collections.reverseOrder() kao komparatorom.
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)); } }
Izlaz
[4 3 2 -1] [chauhan Vishnu Hii]
Obrazloženje:
- Radi samo na nizovima objekata; primitivni tipovi (int) ne mogu koristiti komparatore.
- Za nizove sortira leksikografski od Z -> A.
Prilagođeno sortiranje s komparatorom
Možemo sortirati niz objekata definiranjem prilagođene logike sortiranja uz pomoć Sučelje komparatora .
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); } }
Izlaz
1 Ram MP 2 Shyam UP 3 Hari Delhi
Obrazloženje:
- Komparator omogućuje prilagođenu logiku sortiranja bez mijenjanja klase.
- Ovdje su učenici poredani prema broju spiska.
Prirodno sortiranje s usporedivim sučeljem
U donjem primjeru sortiramo niz Studentskih objekata na temelju njihovog imena abecednim redom.
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); } }
Izlaz
3 Hari Bihar 1 Ram UP 2 Shyam MP
Obrazloženje:
- U ovom primjeru koristimo Usporedivo sučelje za definiranje prirodnog poretka za Student objekte.
- Implementacijom metode specificiramo kako se dva studentska objekta trebaju uspoređivati omogućavanjem sortiranja na temelju imena studenta.
To nam omogućuje da koristimo metodu Arrays.sort() izravno na nizu Studentskih objekata da ih sortiramo po redoslijedu i ovdje nam ne treba zaseban komparator.