0Pricing
Java Academy · Урок

Arrays.sort и сортировка

Сортируйте массивы примитивов и объектов

«Arrays.sort и сортировка» — бесплатный урок Java Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Java Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Java Academy содержит 4 уроков всего.

Зачем нужен класс утилит

Массивы в Java являются объектами, но у них очень мало встроенных методов. Класс java.util.Arrays восполняет этот недостаток с помощью статических вспомогательных методов для сортировки, поиска, сравнения, копирования и вывода массивов.

  • Импортируйте его с помощью import java.util.Arrays;
  • Все методы являются static, поэтому вызывайте их у самого класса: Arrays.sort(...)

Сортировка массива примитивов

Arrays.sort(int[]) сортирует массив на месте с помощью быстрой быстрой сортировки с двумя опорными элементами. Метод ничего не возвращает: исходный массив перестраивается.

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

Сортировка других примитивных типов

Для каждого примитивного типа существуют перегруженные варианты: double[], long[], char[] и другие. Все они сортируют значения по возрастанию.

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

Сортировка диапазона

Вы можете отсортировать только часть массива с помощью Arrays.sort(array, fromIndex, toIndex). Диапазон включает fromIndex и не включает 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));
    }
}

Сортировка массивов объектов

Для массивов объектов, таких как String[], Arrays.sort использует естественный порядок элементов, определяемый их реализацией Comparable. Строки сортируются лексикографически.

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

Сортировка с компаратором

Чтобы изменить естественный порядок, передайте Comparator. Comparator.reverseOrder() сортирует по убыванию. Это работает только с массивами объектов, но не с массивами примитивов.

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 может сравнивать объекты по любому свойству. Comparator.comparingInt(String::length) сортирует строки от самых коротких к самым длинным.

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

Стабильность

Сортировка массивов объектов является стабильной: равные элементы сохраняют исходный относительный порядок. Для сортировок примитивов стабильность не гарантируется, но для примитивов одинаковые значения неразличимы, поэтому это не имеет значения.

Параллельная сортировка

Для очень больших массивов Arrays.parallelSort распределяет работу между несколькими ядрами CPU. Интерфейс метода такой же, как у sort; результат одинаков, но на больших объёмах данных сортировка выполняется быстрее.

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

Распространённая ошибка

Arrays.sort возвращает void. Строка вроде int[] sorted = Arrays.sort(nums); не скомпилируется. Сначала отсортируйте массив, а затем используйте ту же переменную.

Сортировка и вывод

Типичная последовательность действий: отсортируйте массив на месте, а затем выведите его с помощью Arrays.toString, чтобы проверить результат.

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

Быстрая проверка

Проверьте своё понимание сортировки.

Итоги

Вы научились сортировать массивы с помощью класса утилит Arrays.

  • Arrays.sort(arr) сортирует примитивы или объекты на месте по возрастанию.
  • Перегруженный вариант для диапазона sort(arr, from, to) сортирует часть массива.
  • Для массивов объектов можно передать Comparator, задающий собственный порядок.
  • parallelSort ускоряет сортировку больших массивов.

Часто задаваемые вопросы

Урок «Arrays.sort и сортировка» бесплатный?

Да — полный текст урока «Arrays.sort и сортировка» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Java Academy, подпишись на CoddyKit PRO. Курс Java Academy содержит 4 уроков всего.

Чему я научусь в уроке «Arrays.sort и сортировка»?

Сортируйте массивы примитивов и объектов Ты практикуешь Java Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Java Academy?

Предыдущий опыт не требуется. Java Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Arrays.sort и сортировка»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Java Academy?

Да. Каждый урок Java Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Arrays.sort и сортировка
  2. Arrays.binarySearch
  3. Arrays.fill и copyOf
  4. Arrays.equals и toString
← Назад к Java Academy