Arrays.sort i sortowanie
Sortuj tablice typów prymitywnych i obiektów
Arrays.sort i sortowanie to bezpłatna lekcja Java Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Java Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Java Academy zawiera 4 lekcji w sumie.
Dlaczego klasa narzędziowa
Tablice w Javie są obiektami, ale mają bardzo niewiele wbudowanych metod. Klasa java.util.Arrays uzupełnia tę lukę, udostępniając statyczne metody pomocnicze do sortowania, wyszukiwania, porównywania, kopiowania i wyświetlania tablic.
- Zaimportuj ją za pomocą
import java.util.Arrays; - Każda metoda jest
static, więc wywołujesz ją na samej klasie:Arrays.sort(...)
Sortowanie tablicy typów prostych
Arrays.sort(int[]) sortuje tablicę w miejscu, używając szybkiego algorytmu sortowania z dwoma pivotami. Metoda nie zwraca żadnej wartości — oryginalna tablica zostaje uporządkowana.
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));
}
}Sortowanie innych typów prostych
Przeciążenia istnieją dla każdego typu prostego: double[], long[], char[] i innych. Wszystkie sortują rosnąco.
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));
}
}Sortowanie zakresu
Za pomocą Arrays.sort(array, fromIndex, toIndex) można posortować tylko część tablicy. Zakres obejmuje fromIndex, ale nie obejmuje 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));
}
}Sortowanie tablic obiektów
W przypadku tablic obiektów, takich jak String[], Arrays.sort używa elementów zgodnie z ich naturalnym porządkiem, określonym przez implementację Comparable. Ciągi znaków są sortowane leksykograficznie.
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));
}
}Sortowanie za pomocą Comparator
Aby zastąpić naturalny porządek, przekaż obiekt Comparator. Comparator.reverseOrder() sortuje malejąco. Działa to tylko w przypadku tablic obiektów, a nie tablic typów prostych.
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 według długości
Obiekt Comparator może porównywać dowolną właściwość. Comparator.comparingInt(String::length) sortuje ciągi znaków od najkrótszego do najdłuższego.
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));
}
}Stabilność
Sortowanie tablic obiektów jest stabilne: równe elementy zachowują swój pierwotny porządek względny. Sortowanie typów prostych nie gwarantuje stabilności, ale w przypadku typów prostych równe wartości są nierozróżnialne, więc nie ma to znaczenia.
Sortowanie równoległe
W przypadku bardzo dużych tablic Arrays.parallelSort dzieli pracę między wiele rdzeni procesora. Interfejs API jest identyczny jak w przypadku sort; wynik jest taki sam, a przy dużych ilościach danych sortowanie przebiega szybciej.
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));
}
}Częsta pułapka
Arrays.sort zwraca void. Wiersz taki jak int[] sorted = Arrays.sort(nums); nie zostanie skompilowany. Najpierw posortuj tablicę, a następnie użyj tej samej zmiennej.
Sortowanie, a następnie wyświetlanie
Typowy przebieg wygląda następująco: posortuj tablicę w miejscu, a następnie wyświetl ją za pomocą Arrays.toString, aby sprawdzić wynik.
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));
}
}Szybki test
Sprawdź swoje rozumienie sortowania.
Podsumowanie
Nauczyłeś się sortować tablice za pomocą klasy narzędziowej Arrays.
Arrays.sort(arr)sortuje typy proste lub obiekty w miejscu, rosnąco.- Przeciążenie zakresu
sort(arr, from, to)sortuje część tablicy. - Tablice obiektów akceptują obiekt
Comparatorumożliwiający zdefiniowanie własnego porządku. parallelSortprzyspiesza sortowanie dużych tablic.
Często zadawane pytania
Czy lekcja „Arrays.sort i sortowanie” jest bezpłatna?
Tak — pełny tekst „Arrays.sort i sortowanie” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Java Academy, przejdź na CoddyKit PRO. Kurs Java Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Arrays.sort i sortowanie”?
Sortuj tablice typów prymitywnych i obiektów Ćwiczysz Java Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Java Academy?
Nie wymagamy żadnego doświadczenia. Java Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Arrays.sort i sortowanie”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Java Academy?
Tak. Każda lekcja Java Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Arrays.sort i sortowanie
- Arrays.binarySearch
- Arrays.fill i copyOf
- Arrays.equals i toString