Arrays.sort() en Java

Arrays.sort() en Java
Pruébalo en GfG Practice

El método Arrays.sort() en Java se utiliza para ordenar los elementos de una matriz.

  • Proporciona opciones flexibles para ordenar subarreglos de matrices completas o incluso objetos personalizados mediante comparadores.
  • Puede ordenar tanto matrices primitivas (int char, etc.) como matrices de objetos (cadenas enteras, etc.).

Ejemplo: Ordenar matrices de números enteros y caracteres en orden ascendente

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

Producción
[-1 2 3 4] [a b b c]  

Explicación:

  • Arrays.sort() reordena los elementos en orden ascendente.
  • Los duplicados no se eliminan.
  • Las matrices primitivas no pueden utilizar comparadores personalizados.

Sintaxis del método Arrays.sort()

1. Para ordenar toda la matriz

matrices.sort(); 

2. Para ordenar un subarreglo

clasificación de vacío estático público (int[] arr int from_Index int to_Index);

Parámetros:

  • llegar : La matriz que se va a ordenar.
  • desde_Índice: El índice del primer elemento (inclusive) que se va a ordenar.
  • to_Index : El índice del último elemento (exclusivo) que se ordenará.
  • Tipo de devolución: void (Este método no devuelve nada).

Nota:

  • Arrays.sort() no elimina duplicados; solo reordena elementos.
  • Los tipos primitivos no pueden utilizar comparadores personalizados; la clasificación se realiza en orden natural (ascendente).

Ejemplo: ordenar submatriz

Puede ordenar una parte de una matriz especificando índices de inicio (inclusive) y fin (exclusivo).

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

Producción
[2 -1 3 4]  

Explicación: Sólo se ordenan los elementos de los índices 1, 2 y 3; el elemento en el índice 0 permanece sin cambios.

Clasificación en orden descendente

Para ordenar una matriz en orden descendente podemos usar el método Arrays.sort() con Collections.reverseOrder() como 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  ));      }   }   

Producción
[4 3 2 -1] [chauhan Vishnu Hii]  

Explicación:

  • Funciona sólo en matrices de objetos; Los tipos primitivos (int) no pueden usar comparadores.
  • For Strings ordena lexicográficamente desde Z -> A.

Clasificación personalizada con comparador

Podemos ordenar una serie de objetos definiendo una lógica de clasificación personalizada con la ayuda del uso de  Interfaz del comparador .

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

Producción
1 Ram MP 2 Shyam UP 3 Hari Delhi  

Explicación:

  • Comparator permite una lógica de clasificación personalizada sin modificar la clase.
  • Aquí los estudiantes se clasifican por número de lista.

Clasificación natural con interfaz comparable

En el siguiente ejemplo, ordenamos alfabéticamente una matriz de objetos Estudiante según su nombre.

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

Producción
3 Hari Bihar 1 Ram UP 2 Shyam MP  

Explicación:

  • En este ejemplo utilizamos el Interfaz comparable para definir un orden natural para los objetos de Estudiante.
  • Al implementar el método, especificamos cómo se deben comparar dos objetos Estudiante al permitir la clasificación según el nombre del estudiante.

Esto nos permite usar el método Arrays.sort() directamente en una matriz de objetos Student para ordenarlos y aquí no necesitamos un comparador separado.

Crear cuestionario