logo

Arrays.sort() a Java

Prova-ho a GfG Practice ' title=

El mètode Arrays.sort() de Java s'utilitza per ordenar els elements d'una matriu.

  • Proporciona opcions flexibles per ordenar matrius senceres subarrays o fins i tot objectes personalitzats mitjançant comparadors.
  • Pot ordenar tant matrius primitives (car int, etc.) com matrius d'objectes (cadena enter, etc.).

Exemple: Ordenant matrius d'enters i caràcters en ordre ascendent



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

Sortida
[-1 2 3 4] [a b b c] 

Explicació:

  • Arrays.sort() reordena els elements en ordre ascendent.
  • Els duplicats no s'eliminen.
  • Les matrius primitives no poden utilitzar comparadors personalitzats.

Sintaxi del mètode Arrays.sort().

1. Per ordenar tota la matriu

Arrays.sort(); 

2. Ordenar un subbarrat

public static void sort(int[] arr int from_Index int to_Index) ;



Paràmetres:

  • arr : La matriu que s'ha d'ordenar.
  • de_índex: L'índex del primer element (inclòs) que s'ha d'ordenar.
  • a_indexar : L'índex de l'últim element (exclusiu) a ordenar.
  • Tipus de retorn: void (Aquest mètode no retorna res).

Nota:

  • Arrays.sort() no elimina els duplicats; només reordena elements.
  • Els tipus primitius no poden utilitzar comparadors personalitzats; l'ordenació és en ordre natural (creixent).

Exemple: Ordenació de Subbarray

Podeu ordenar una part d'una matriu especificant els índexs d'inici (inclosos) i finals (exclusius).



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

Sortida
[2 -1 3 4] 

Explicació: Només s'ordenen els elements dels índexs 1 2 i 3; l'element de l'índex 0 es manté sense canvis.

Ordenació per ordre descendent

Per ordenar una matriu en ordre descendent podem utilitzar el mètode Arrays.sort() amb Collections.reverseOrder() com a comparador.

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

Sortida
[4 3 2 -1] [chauhan Vishnu Hii] 

Explicació:

  • Només funciona amb matrius d'objectes; Els tipus primitius (int) no poden utilitzar comparadors.
  • Per a les cadenes, ordena lexicogràficament des de Z -> A.

Classificació personalitzada amb comparador

Podem ordenar una matriu d'objectes definint una lògica d'ordenació personalitzada amb l'ajuda de l'  Interfície de comparació .

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

Sortida
1 Ram MP 2 Shyam UP 3 Hari Delhi 

Explicació:

  • El comparador permet una lògica d'ordenació personalitzada sense modificar la classe.
  • Aquí els alumnes estan ordenats per número de rotlle.

Classificació natural amb interfície comparable

A l'exemple següent, ordenem una matriu d'objectes Student en funció del seu nom alfabèticament.

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

Sortida
3 Hari Bihar 1 Ram UP 2 Shyam MP 

Explicació:

  • En aquest exemple fem servir el Interfície comparable per definir un ordre natural per als objectes Student.
  • Mitjançant la implementació del mètode, especifiquem com s'han de comparar dos objectes Student habilitant l'ordenació en funció del nom de l'estudiant.

Això ens permet utilitzar el mètode Arrays.sort() directament en una matriu d'objectes Student per ordenar-los en un ordre i aquí no necessitem un comparador separat.