0Pricing
Java Academy · Lekcja

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 Comparator umożliwiający zdefiniowanie własnego porządku.
  • parallelSort przyspiesza 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

  1. Arrays.sort i sortowanie
  2. Arrays.binarySearch
  3. Arrays.fill i copyOf
  4. Arrays.equals i toString
← Powrót do Java Academy