Arrays.sort() v Javi
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.
Java import 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 .
Java import 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.
Java import 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.
Ustvari kviz