De methode Arrays.sort() in Java wordt gebruikt om de elementen van een array te sorteren.
- Het biedt flexibele opties om hele arrays, subarrays of zelfs aangepaste objecten te sorteren met behulp van comparatoren.
- Kan zowel primitieve arrays (int char enz.) als objectarrays (Integer String enz.) sorteren.
Voorbeeld: Sorteren van integer- en karakterarrays in oplopende volgorde
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)); } }
Uitvoer
[-1 2 3 4] [a b b c]
Uitleg:
- Arrays.sort() rangschikt elementen opnieuw in oplopende volgorde.
- Duplicaten worden niet verwijderd.
- Primitieve arrays kunnen geen aangepaste comparatoren gebruiken.
Syntaxis van de methode Arrays.sort().
1. Om de hele array te sorteren
Arrays.sort();
2. Een subarray sorteren
public static void sort(int[] arr int from_Index int to_Index) ;
Parameters:
- arr : De array die moet worden gesorteerd.
- van_Index: De index van het eerste element (inclusief) dat moet worden gesorteerd.
- naar_Index : De index van het laatste element (exclusief) dat moet worden gesorteerd.
- Retourtype: void (deze methode retourneert niets).
Opmerking:
- Arrays.sort() verwijdert geen duplicaten; het herschikt alleen elementen.
- Primitieve typen kunnen geen aangepaste comparatoren gebruiken; de sortering vindt plaats in natuurlijke (oplopende) volgorde.
Voorbeeld: Subarray sorteren
U kunt een deel van een array sorteren door start- (inclusief) en eind- (exclusieve) indexen op te geven.
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)); } }
Uitvoer
[2 -1 3 4]
Uitleg: Alleen de elementen op de indices 1 2 en 3 worden gesorteerd; het element op index 0 blijft ongewijzigd.
Aflopende volgorde sorteren
Om een array in aflopende volgorde te sorteren, kunnen we de methode Arrays.sort() gebruiken met Collections.reverseOrder() als comparator.
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)); } }
Uitvoer
[4 3 2 -1] [chauhan Vishnu Hii]
Uitleg:
- Werkt alleen op objectarrays; primitieve typen (int) kunnen geen comparatoren gebruiken.
- For Strings sorteert lexicografisch van Z -> A.
Aangepaste sortering met comparator
We kunnen een reeks objecten sorteren door aangepaste sorteerlogica te definiëren met behulp van de Vergelijkingsinterface .
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); } }
Uitvoer
1 Ram MP 2 Shyam UP 3 Hari Delhi
Uitleg:
- Comparator maakt aangepaste sorteerlogica mogelijk zonder de klasse te wijzigen.
- Hier worden de leerlingen gesorteerd op rolnummer.
Natuurlijke sortering met vergelijkbare interface
In het onderstaande voorbeeld sorteren we een reeks Student-objecten alfabetisch op basis van hun naam.
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); } }
Uitvoer
3 Hari Bihar 1 Ram UP 2 Shyam MP
Uitleg:
- In dit voorbeeld gebruiken we de Vergelijkbare interface om een natuurlijke volgorde voor de Student-objecten te definiëren.
- Door de methode te implementeren specificeren we hoe twee Student-objecten moeten worden vergeleken door sorteren op basis van de naam van de student mogelijk te maken.
Hierdoor kunnen we de methode Arrays.sort() rechtstreeks op een array met Student-objecten gebruiken om ze in een bepaalde volgorde te sorteren. Hier hebben we geen aparte comparator nodig.