logo

Arrays.sort() in Java

Probieren Sie es bei GfG Practice aus ' title=

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.

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));  } } 

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 .

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);  } } 

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.

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);  } } 

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.