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