Техники сортировки в Java

JavaJavaBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

Сортировка является важнейшей операцией в информатике, и Java предоставляет различные встроенные методы для сортировки различных структур данных. В Java есть разные классы, доступные для сортировки различных структур данных. В этом лабораторном занятии мы будем изучать сортировку массивов, коллекций и экземпляров пользовательских классов.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) java(("Java")) -.-> java/DataStructuresGroup(["Data Structures"]) java/DataStructuresGroup -.-> java/arrays("Arrays") java/DataStructuresGroup -.-> java/arrays_methods("Arrays Methods") java/DataStructuresGroup -.-> java/sorting("Sorting") java/DataStructuresGroup -.-> java/collections_methods("Collections Methods") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/arraylist("ArrayList") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/hashmap("HashMap") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/hashset("HashSet") subgraph Lab Skills java/arrays -.-> lab-117987{{"Техники сортировки в Java"}} java/arrays_methods -.-> lab-117987{{"Техники сортировки в Java"}} java/sorting -.-> lab-117987{{"Техники сортировки в Java"}} java/collections_methods -.-> lab-117987{{"Техники сортировки в Java"}} java/arraylist -.-> lab-117987{{"Техники сортировки в Java"}} java/hashmap -.-> lab-117987{{"Техники сортировки в Java"}} java/hashset -.-> lab-117987{{"Техники сортировки в Java"}} end

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

Массивы - это простая структура данных, которая используется для хранения данных одного типа в упорядоченном виде. Мы можем сортировать массивы с использованием встроенного метода sort() класса Arrays.

Следующий код демонстрирует сортировку массива с использованием метода sort():

public static void main(String[] args) {
    int[] arr = {7, 9, 1, 0, 2, 5, 6, 11};
    System.out.println("Array Before Sorting: " + Arrays.toString(arr));
    Arrays.sort(arr);
    System.out.println("Array After Sorting: " + Arrays.toString(arr));
}

Для запуска этого кода перейдите в директорию ~/project в терминале и выполните следующие команды:

$ javac Sorting.java
$ java Sorting

Этот код отсортирует массив в порядке возрастания. Если вы хотите отсортировать массив в порядке убывания, вам нужно отсортировать его с использованием интерфейса Comparator.

Сортировка коллекций

Java предоставляет класс Collections, который имеет метод sort() для сортировки коллекций, таких как списки, множества и карты. Модель работы этой функции аналогична методу sort() класса Arrays.

Следующий код демонстрирует сортировку списка целых чисел с использованием метода sort():

public static void main(String[] args) {
    List<Integer> list = new ArrayList<Integer>();
    list.add(6);
    list.add(3);
    list.add(8);
    list.add(1);
    list.add(9);

    System.out.println("List before sorting: " + list);

    Collections.sort(list);
    System.out.println("List after sorting: " + list);
}

Для запуска этого кода перейдите в директорию ~/project в терминале и выполните следующие команды:

$ javac Sorting.java
$ java Sorting

Сортировка множеств

Множества используются для хранения неупорядоченных данных без дубликатов. Мы не можем напрямую сортировать множества с использованием метода sort() класса Collections. Однако мы можем просмотреть упорядоченные данные, передав все элементы множества в список и затем отсортировав этот список.

Следующий код демонстрирует сортировку множества целых чисел с использованием метода sort():

public static void main(String[] args) {
    Set<Integer> set = new HashSet<Integer>();
    set.add(6);
    set.add(3);
    set.add(-2);
    set.add(1);
    set.add(9);

    List<Integer> list = new ArrayList<Integer>(set);
    Collections.sort(list);
    System.out.println("Set after sorting: " + list);
}

Для запуска этого кода перейдите в директорию ~/project в терминале и выполните следующие команды:

$ javac Sorting.java
$ java Sorting

Результатом работы этого кода будет отсортированный список целых чисел.

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

Карты используются для хранения пар ключ-значение. Мы можем сортировать карты на основе их ключей или значений. TreeMap также можно использовать для хранения пар ключ-значение в отсортированном порядке.

Следующий код демонстрирует сортировку карты целых чисел с использованием метода sort():

public static void main(String[] args) {
    Map<Integer, String> map = new TreeMap<Integer, String>();
    map.put(6, "Apple");
    map.put(3, "Banana");
    map.put(1, "Mango");
    map.put(9, "Orange");

    System.out.println("Map before sorting: " + map);

    // Sorting by keys
    Map<Integer, String> sortedByKeyMap = new TreeMap<Integer, String>(map);
    System.out.println("Map after sorting by keys: " + sortedByKeyMap);

    // Sorting by value
    List<Map.Entry<Integer, String>> list = new ArrayList<Map.Entry<Integer, String>>(map.entrySet());
    Collections.sort(list, new Comparator<Map.Entry<Integer, String>>() {
        public int compare(Map.Entry<Integer, String> o1, Map.Entry<Integer, String> o2) {
            return (o1.getValue()).compareTo(o2.getValue());
        }
    });

    Map<Integer, String> sortedByValueMap = new LinkedHashMap<Integer, String>();
    for (Map.Entry<Integer, String> entry : list) {
        sortedByValueMap.put(entry.getKey(), entry.getValue());
    }
    System.out.println("Map after sorting by values: " + sortedByValueMap);
}

Для запуска этого кода перейдите в директорию ~/project в терминале и выполните следующие команды:

$ javac Sorting.java
$ java Sorting

Этот код отсортирует карту по ключам и значениям.

Резюме

В этом практическом занятии показано, как сортировать различные структуры данных в Java. Мы узнали, как сортировать массивы, коллекции и карты. Мы также узнали, как сортировать объекты пользовательских классов с использованием интерфейсов Comparable и Comparator. Метод sort() классов Collections и Arrays использовался для сортировки списков и массивов. Наконец, мы узнали, как сортировать карты на основе их значений и ключей.