Metoda Arrays.sort() v Javi se uporablja za razvrščanje elementov matrike.
- Ponuja prilagodljive možnosti za razvrščanje celotnih nizov, podnizov ali celo predmetov po meri z uporabo primerjalnikov.
- Lahko razvrsti tako primitivne nize (int char itd.) kot nize predmetov (Integer String itd.).
primer: Razvrščanje nizov celih števil in znakov v naraščajočem vrstnem redu
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)); } }
Izhod
[-1 2 3 4] [a b b c]
Pojasnilo:
- Arrays.sort() preureja elemente v naraščajočem vrstnem redu.
- Dvojniki se ne odstranijo.
- Primitivni nizi ne morejo uporabljati primerjalnikov po meri.
Sintaksa metode Arrays.sort().
1. Za razvrščanje celotne matrike
Arrays.sort();
2. Za razvrščanje podmatrike
public static void sort(int[] arr int from_Index int to_Index) ;
Parametri:
- prir : niz, ki ga želite razvrstiti.
- iz_indeksa: Indeks prvega elementa (vključno), ki ga je treba razvrstiti.
- na_indeks : Indeks zadnjega (izključnega) elementa, ki bo razvrščen.
- Vrsta vračila: void (ta metoda ne vrne ničesar).
Opomba:
- Arrays.sort() ne odstrani dvojnikov; samo preureja elemente.
- Primitivni tipi ne morejo uporabljati primerjalnikov po meri; razvrščanje je v naravnem (naraščajočem) vrstnem redu.
Primer: Razvrščanje podmatrike
Del matrike lahko razvrstite tako, da določite začetni (vključno) in končni (izključni) indeks.
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)); } }
Izhod
[2 -1 3 4]
Pojasnilo: Razvrščeni so samo elementi z indeksi 1 2 in 3; element z indeksom 0 ostane nespremenjen.
Razvrščanje po padajočem vrstnem redu
Za razvrščanje matrike v padajočem vrstnem redu lahko uporabimo metodo Arrays.sort() s Collections.reverseOrder() kot primerjalnikom.
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)); } }
Izhod
[4 3 2 -1] [chauhan Vishnu Hii]
Pojasnilo:
- Deluje samo na objektnih nizih; primitivni tipi (int) ne morejo uporabljati primerjalnikov.
- For Strings razvršča leksikografsko od Z -> A.
Razvrščanje po meri s primerjalnikom
Matriko predmetov lahko razvrstimo tako, da definiramo logiko razvrščanja po meri s pomočjo Vmesnik primerjalnika .
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); } }
Izhod
1 Ram MP 2 Shyam UP 3 Hari Delhi
Pojasnilo:
- Primerjalnik omogoča logiko razvrščanja po meri brez spreminjanja razreda.
- Tukaj so učenci razvrščeni po številki zvitka.
Naravno razvrščanje s primerljivim vmesnikom
V spodnjem primeru razvrstimo matriko predmetov Student glede na njihovo ime po abecedi.
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); } }
Izhod
3 Hari Bihar 1 Ram UP 2 Shyam MP
Pojasnilo:
- V tem primeru uporabljamo Primerljiv vmesnik za definiranje naravnega reda za predmete Student.
- Z implementacijo metode določimo, kako naj se dva predmeta študenta primerjata z omogočanjem razvrščanja na podlagi imena študenta.
To nam omogoča uporabo metode Arrays.sort() neposredno na matriki predmetov Student, da jih razvrstimo po vrstnem redu in tukaj ne potrebujemo ločenega primerjalnika.