Arrays.sort() Java nyelven
A Java Arrays.sort() metódusa egy tömb elemeinek rendezésére szolgál.
- Rugalmas lehetőségeket biztosít teljes tömb altömbök vagy akár egyéni objektumok rendezésére komparátorok segítségével.
- Mind a primitív tömböket (int char stb.), mind az objektumtömböket (Integer String stb.) képes rendezni.
Példa: Egész és karaktertömbök rendezése növekvő sorrendben
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 )); } }
Kimenet
[-1 2 3 4] [a b b c]
Magyarázat:
- Az Arrays.sort() az elemeket növekvő sorrendben rendezi át.
- A másolatok nem kerülnek eltávolításra.
- A primitív tömbök nem használhatnak egyéni összehasonlítókat.
A tömbök szintaxisa.sort() Metódus
1. A teljes tömb rendezéséhez
Arrays.sort();
2. Egy altömb rendezéséhez
public static void sort(int[] arr int from_Index int to_Index) ;
Paraméterek:
- arr : A rendezendő tömb.
- from_Index: Az első rendezendő elem indexe (beleértve).
- to_Index : Az utolsó (kizárólag) rendezendő elem indexe.
- Visszaküldés típusa: érvénytelen (Ez a módszer nem ad vissza semmit).
Jegyzet:
- Az Arrays.sort() nem távolítja el a duplikációkat; csak az elemeket rendezi át.
- A primitív típusok nem használhatnak egyéni összehasonlítókat; a rendezés természetes (növekvő) sorrendben történik.
Példa : Subray rendezése
Egy tömb egy részét rendezheti a kezdő (beleértve) és a vég (kizáró) indexek megadásával.
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 )); } }
Kimenet
[2 -1 3 4]
Magyarázat: Csak az 1 2 és 3 indexek elemei vannak rendezve; a 0 indexű elem változatlan marad.
Csökkenő sorrendű rendezés
Egy tömb csökkenő sorrendbe rendezéséhez használhatjuk az Arrays.sort() metódust a Collections.reverseOrder()-vel összehasonlítóként.
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 )); } }
Kimenet
[4 3 2 -1] [chauhan Vishnu Hii]
Magyarázat:
- Csak objektumtömbökön működik; a primitív típusok (int) nem használhatnak komparátorokat.
- A For Strings lexikográfiailag rendezi a Z -> A.
Egyedi rendezés a Comparator segítségével
Objektumok tömbjét rendezhetjük úgy, hogy egyedi rendezési logikát határozunk meg a segítségével Összehasonlító felület .
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 ); } }
Kimenet
1 Ram MP 2 Shyam UP 3 Hari Delhi
Magyarázat:
- A Comparator lehetővé teszi az egyéni rendezési logikát az osztály módosítása nélkül.
- Itt a tanulók sorszám szerint vannak rendezve.
Természetes válogatás összehasonlítható felülettel
Az alábbi példában a Student objektumok tömbjét a nevük alapján ábécé sorrendben rendezzük.
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 ); } }
Kimenet
3 Hari Bihar 1 Ram UP 2 Shyam MP
Magyarázat:
- Ebben a példában a Összehasonlítható felület a Student objektumok természetes sorrendjének meghatározásához.
- A metódus implementálásával megadjuk, hogyan hasonlítson össze két Student objektumot, engedélyezve a tanuló neve alapján történő rendezést.
Ez lehetővé teszi, hogy az Arrays.sort() metódust közvetlenül a Student objektumok tömbjén használjuk, hogy sorrendbe rendezzük őket, és itt nincs szükség külön összehasonlítóra.
Kvíz létrehozása