Arrays.sort og sortering
Sortér primitive arrays og objektarrays
Arrays.sort og sortering er en gratis Java Academy-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Java Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Java Academy-kurset indeholder 4 lektioner i alt.
Hvorfor en hjælpeklasse
Arrays i Java er objekter, men de har meget få indbyggede metoder. Klassen java.util.Arrays udfylder hullet med statiske hjælpefunktioner til sortering, søgning, sammenligning, kopiering og udskrivning af arrays.
- Importér den med
import java.util.Arrays; - Alle metoder er
static, så du kalder dem på selve klassen:Arrays.sort(...)
Sortering af et primitivt array
Arrays.sort(int[]) sorterer arrayet direkte ved hjælp af en hurtig quicksort med to pivoter. Den returnerer ingen værdi; det oprindelige array omarrangeres.
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));
}
}Sortering af andre primitive typer
Der findes overloads til alle primitive typer: double[], long[], char[] og flere andre. De sorterer alle i stigende rækkefølge.
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));
}
}Sortering af et interval
Du kan sortere en del af et array med Arrays.sort(array, fromIndex, toIndex). Intervallet omfatter fromIndex og omfatter ikke 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));
}
}Sortering af objekt-arrays
For objekt-arrays som String[] bruger Arrays.sort elementernes naturlige rækkefølge, altså deres Comparable-implementering. Strenge sorteres leksikografisk.
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));
}
}Sortering med en Comparator
Hvis du vil tilsidesætte den naturlige rækkefølge, skal du angive en Comparator. Comparator.reverseOrder() sorterer i faldende rækkefølge. Det fungerer kun på objekt-arrays, ikke på primitive arrays.
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 efter længde
En Comparator kan sammenligne ud fra enhver egenskab. Comparator.comparingInt(String::length) sorterer strenge fra kortest til længst.
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));
}
}Stabilitet
Sortering af objekt-arrays er stabil: Elementer, der er ens, bevarer deres indbyrdes oprindelige rækkefølge. Sortering af primitive typer er ikke garanteret stabil, men for primitive værdier kan ens værdier ikke skelnes, så det gør ingen forskel.
Parallel sortering
Ved meget store arrays fordeler Arrays.parallelSort arbejdet på flere CPU-kerner. API'et er identisk med sort; resultatet er det samme, men det går kun hurtigere ved store datamængder.
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));
}
}En almindelig faldgrube
Arrays.sort returnerer void. En linje som int[] sorted = Arrays.sort(nums); kan ikke kompileres. Sortér først, og brug derefter den samme variabel.
Sortér og udskriv derefter
Et typisk forløb er at sortere arrayet direkte og derefter udskrive det med Arrays.toString for at kontrollere resultatet.
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));
}
}Hurtig kontrol
Afprøv din forståelse af sortering.
Opsamling
Du har lært at sortere arrays med hjælpeklassen Arrays.
Arrays.sort(arr)sorterer primitive typer eller objekter direkte i stigende rækkefølge.- En overload med et interval,
sort(arr, from, to), sorterer en del af arrayet. - Objekt-arrays accepterer en
Comparatortil brugerdefineret rækkefølge. parallelSortgør store arrays hurtigere.
Lær Java med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 104
- Lektioner
- 374
Ofte stillede spørgsmål
Er lektionen “Arrays.sort og sortering” gratis?
Ja — hele teksten til “Arrays.sort og sortering” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Java Academy-kurset, skal du opgradere til CoddyKit PRO. Java Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Arrays.sort og sortering”?
Sortér primitive arrays og objektarrays Du øver dig i Java Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Java Academy?
Der kræves ingen tidligere erfaring. Java Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.
Hvor lang tid tager lektionen “Arrays.sort og sortering”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Java Academy-lektion?
Ja. Alle Java Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Arrays.sort og sortering
- Arrays.binarySearch
- Arrays.fill og copyOf
- Arrays.equals og toString