Arrays.sort e ordinamento
Ordini array di primitivi e oggetti
Arrays.sort e ordinamento è una lezione Java Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Java Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Java Academy include 4 lezioni in totale.
Perché una classe di utilità
In Java gli array sono oggetti, ma dispongono di pochissimi metodi integrati. La classe java.util.Arrays colma questa lacuna con metodi di supporto statici per ordinare, cercare, confrontare, copiare e stampare gli array.
- La importi con
import java.util.Arrays; - Ogni metodo è
static, quindi lo chiami direttamente sulla classe:Arrays.sort(...)
Ordinare un array di primitivi
Arrays.sort(int[]) ordina l'array sul posto utilizzando un quicksort veloce a doppio pivot. Non restituisce alcun valore: l'array originale viene riordinato.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] nums = {5, 2, 8, 1, 9, 3};
Arrays.sort(nums);
System.out.println(Arrays.toString(nums));
}
}Ordinare altri tipi primitivi
Esistono overload per ogni tipo primitivo: double[], long[], char[] e altri. Ordinano tutti in ordine crescente.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
double[] prices = {3.5, 1.2, 9.9, 0.5};
Arrays.sort(prices);
System.out.println(Arrays.toString(prices));
}
}Ordinare un intervallo
Può ordinare solo una parte dell'array con Arrays.sort(array, fromIndex, toIndex). L'intervallo include fromIndex ed esclude toIndex.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] nums = {5, 2, 8, 1, 9, 3};
Arrays.sort(nums, 1, 4);
System.out.println(Arrays.toString(nums));
}
}Ordinare array di oggetti
Per gli array di oggetti come String[], Arrays.sort utilizza l'ordinamento naturale degli elementi, ovvero la loro implementazione di Comparable. Le stringhe vengono ordinate lessicograficamente.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
String[] names = {"Charlie", "Alice", "Bob"};
Arrays.sort(names);
System.out.println(Arrays.toString(names));
}
}Ordinare con un Comparator
Per sostituire l'ordinamento naturale, passi un Comparator. Comparator.reverseOrder() ordina in modo decrescente. Funziona solo sugli array di oggetti, non sugli array di primitivi.
import java.util.Arrays;
import java.util.Comparator;
public class Main {
public static void main(String[] args) {
String[] names = {"Charlie", "Alice", "Bob"};
Arrays.sort(names, Comparator.reverseOrder());
System.out.println(Arrays.toString(names));
}
}Comparator per lunghezza
Un Comparator può confrontare qualsiasi proprietà. Comparator.comparingInt(String::length) ordina le stringhe dalla più corta alla più lunga.
import java.util.Arrays;
import java.util.Comparator;
public class Main {
public static void main(String[] args) {
String[] words = {"banana", "fig", "apple"};
Arrays.sort(words, Comparator.comparingInt(String::length));
System.out.println(Arrays.toString(words));
}
}Stabilità
L'ordinamento degli array di oggetti è stabile: gli elementi uguali mantengono il loro ordine relativo originale. Non è garantita la stabilità degli ordinamenti dei primitivi, ma per i primitivi i valori uguali sono indistinguibili, quindi non è rilevante.
Ordinamento parallelo
Per array molto grandi, Arrays.parallelSort suddivide il lavoro tra più core della CPU. L'API è identica a quella di sort; il risultato è lo stesso, ma l'operazione è più veloce su grandi quantità di dati.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] nums = {7, 3, 9, 1, 5, 2, 8, 4};
Arrays.parallelSort(nums);
System.out.println(Arrays.toString(nums));
}
}Un errore comune
Arrays.sort restituisce void. Una riga come int[] sorted = Arrays.sort(nums); non viene compilata. Prima ordini l'array, poi utilizzi la stessa variabile.
Ordinare e poi stampare
Un flusso tipico consiste nell'ordinare l'array sul posto e poi stamparlo con Arrays.toString per verificare il risultato.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] scores = {88, 72, 95, 60, 81};
Arrays.sort(scores);
System.out.println("Lowest: " + scores[0]);
System.out.println("Highest: " + scores[scores.length - 1]);
System.out.println(Arrays.toString(scores));
}
}Verifica rapida
Verifichi la Sua comprensione dell'ordinamento.
Riepilogo
Ha imparato a ordinare gli array con la classe di utilità Arrays.
Arrays.sort(arr)ordina sul posto i primitivi o gli oggetti, in ordine crescente.- L'overload per un intervallo,
sort(arr, from, to), ordina una parte dell'array. - Gli array di oggetti accettano un
Comparatorper definire un ordinamento personalizzato. parallelSortaccelera l'ordinamento di array grandi.
Domande Frequenti
La lezione «Arrays.sort e ordinamento» è gratuita?
Sì — il testo completo di «Arrays.sort e ordinamento» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Java Academy, passa a CoddyKit PRO. Il corso Java Academy include 4 lezioni in totale.
Cosa imparerò in «Arrays.sort e ordinamento»?
Ordini array di primitivi e oggetti Eserciti Java Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Java Academy?
Non è richiesta alcuna esperienza precedente. Java Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «Arrays.sort e ordinamento»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Java Academy?
Sì. Ogni lezione Java Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Arrays.sort e ordinamento
- Arrays.binarySearch
- Arrays.fill e copyOf
- Arrays.equals e toString