logo

Arrays.sort() in Java

Probeer het eens op GfG Practice ' title=

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.

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

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 .

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

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.

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

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.