Die Methode Arrays.sort() in Java wird zum Sortieren der Elemente eines Arrays verwendet.
- Es bietet flexible Optionen zum Sortieren ganzer Arrays, Unterarrays oder sogar benutzerdefinierter Objekte mithilfe von Komparatoren.
- Kann sowohl primitive Arrays (int char usw.) als auch Objektarrays (Integer String usw.) sortieren.
Beispiel: Sortieren von Ganzzahl- und Zeichenarrays in aufsteigender Reihenfolge
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)); } }
Ausgabe
[-1 2 3 4] [a b b c]
Erläuterung:
- Arrays.sort() ordnet Elemente in aufsteigender Reihenfolge neu.
- Duplikate werden nicht entfernt.
- Primitive Arrays können keine benutzerdefinierten Komparatoren verwenden.
Syntax der Arrays.sort()-Methode
1. Um das gesamte Array zu sortieren
Arrays.sort();
2. Um ein Subarray zu sortieren
public static void sort(int[] arr int from_Index int to_Index) ;
Parameter:
- arr : Das zu sortierende Array.
- from_Index: Der Index des ersten zu sortierenden Elements (einschließlich).
- to_Index : Der Index des letzten (exklusiven) Elements, das sortiert werden soll.
- Rückgabetyp: void (Diese Methode gibt nichts zurück).
Notiz:
- Arrays.sort() entfernt keine Duplikate; es ordnet nur Elemente neu.
- Primitive Typen können keine benutzerdefinierten Komparatoren verwenden; Die Sortierung erfolgt in natürlicher (aufsteigender) Reihenfolge.
Beispiel: Subarray sortieren
Sie können einen Teil eines Arrays sortieren, indem Sie Startindizes (einschließlich) und Endindizes (exklusiv) angeben.
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)); } }
Ausgabe
[2 -1 3 4]
Erläuterung: Nur die Elemente mit den Indizes 1, 2 und 3 werden sortiert; Das Element am Index 0 bleibt unverändert.
Absteigende Sortierung
Um ein Array in absteigender Reihenfolge zu sortieren, können wir die Methode Arrays.sort() mit Collections.reverseOrder() als Komparator verwenden.
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)); } }
Ausgabe
[4 3 2 -1] [chauhan Vishnu Hii]
Erläuterung:
- Funktioniert nur bei Objektarrays; primitive Typen (int) können keine Komparatoren verwenden.
- Für Strings wird lexikographisch von Z -> A sortiert.
Benutzerdefinierte Sortierung mit Komparator
Wir können ein Array von Objekten sortieren, indem wir mithilfe von eine benutzerdefinierte Sortierlogik definieren Komparatorschnittstelle .
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); } }
Ausgabe
1 Ram MP 2 Shyam UP 3 Hari Delhi
Erläuterung:
- Comparator ermöglicht eine benutzerdefinierte Sortierlogik, ohne die Klasse zu ändern.
- Hier werden die Schüler nach Rollennummer sortiert.
Natürliche Sortierung mit vergleichbarer Schnittstelle
Im folgenden Beispiel sortieren wir ein Array von Student-Objekten alphabetisch nach ihrem Namen.
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); } }
Ausgabe
3 Hari Bihar 1 Ram UP 2 Shyam MP
Erläuterung:
- In diesem Beispiel verwenden wir die Vergleichbare Schnittstelle um eine natürliche Reihenfolge für die Student-Objekte zu definieren.
- Durch die Implementierung der Methode geben wir an, wie zwei Student-Objekte verglichen werden sollen, indem wir die Sortierung basierend auf dem Namen des Studenten aktivieren.
Dadurch können wir die Methode Arrays.sort() direkt für ein Array von Student-Objekten verwenden, um sie in einer bestimmten Reihenfolge zu sortieren, und hier benötigen wir keinen separaten Komparator.