Сортировка строк в Java с использованием Arrays.sort()

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

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

Введение

В Java внутри класса String нет отдельного метода для сортировки. Однако, мы можем использовать тот факт, что массив символов можно легко отсортировать с использованием различных алгоритмов. В Java есть несколько способов сортировать строки, например, с использованием Arrays.sort(), Comparator в Arrays.sort(), или часто используемых алгоритмов сортировки, таких как Selection Sort и Bubble Sort. В этом лабораторном задании мы рассмотрим, как отсортировать строку в Java с использованием метода Arrays.sort().


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/BasicSyntaxGroup(["Basic Syntax"]) java(("Java")) -.-> java/StringManipulationGroup(["String Manipulation"]) java(("Java")) -.-> java/DataStructuresGroup(["Data Structures"]) java(("Java")) -.-> java/SystemandDataProcessingGroup(["System and Data Processing"]) java/BasicSyntaxGroup -.-> java/for_loop("For Loop") java/BasicSyntaxGroup -.-> java/output("Output") java/StringManipulationGroup -.-> java/strings("Strings") java/DataStructuresGroup -.-> java/arrays("Arrays") java/DataStructuresGroup -.-> java/arrays_methods("Arrays Methods") java/DataStructuresGroup -.-> java/sorting("Sorting") java/SystemandDataProcessingGroup -.-> java/string_methods("String Methods") subgraph Lab Skills java/for_loop -.-> lab-117456{{"Сортировка строк в Java с использованием Arrays.sort()"}} java/output -.-> lab-117456{{"Сортировка строк в Java с использованием Arrays.sort()"}} java/strings -.-> lab-117456{{"Сортировка строк в Java с использованием Arrays.sort()"}} java/arrays -.-> lab-117456{{"Сортировка строк в Java с использованием Arrays.sort()"}} java/arrays_methods -.-> lab-117456{{"Сортировка строк в Java с использованием Arrays.sort()"}} java/sorting -.-> lab-117456{{"Сортировка строк в Java с использованием Arrays.sort()"}} java/string_methods -.-> lab-117456{{"Сортировка строк в Java с использованием Arrays.sort()"}} end

Напишите код

В этом шаге мы напишем Java-программу для сортировки строки с использованием функции Arrays.sort(). Код берет входную строку, преобразует ее в массив символов, сортирует массив с использованием функции Arrays.sort() и затем преобразует его обратно в строку.

import java.util.Arrays;

public class SortString {
    public static void main(String[] args) {
        String originalString = "The quick brown fox jumps over the lazy dog";
        String sortedString = "";
        char[] tempArr = originalString.toCharArray();   // преобразуем строку в массив символов
        Arrays.sort(tempArr);   // сортируем массив символов
        sortedString = new String(tempArr);   // преобразуем отсортированный массив символов в строку
        System.out.println("Original String: " + originalString);
        System.out.println("Sorted String: " + sortedString);
    }
}

Скомпилируйте и запустите код

Откройте терминал и перейдите в директорию ~/project. Скомпилируйте Java-программу с использованием следующей команды:

javac SortString.java

Запустите Java-программу с использованием следующей команды:

java SortString

Вывод программы будет выглядеть так:

Original String: The quick brown fox jumps over the lazy dog
Sorted String:    Tabcdeeefghhijklmnoooopqrrstuuvwxyz

Реализуйте нечувствительную к регистру сортировку

В Java метод Arrays.sort() сравнивает символы по их значениям Unicode. Чтобы отсортировать строку без учета регистра, мы можем модифицировать алгоритм сортировки с использованием Comparator. В этом шаге мы отредактируем предыдущий Java-код, чтобы отсортировать строку без учета регистра.

import java.util.Arrays;
import java.util.Comparator;

public class SortString {
    public static void main(String[] args) {
        String originalString = "The quick brown fox jumps over the lazy dog";
        String sortedString = "";
        Character[] tempArr = toCharacterArray(originalString.toLowerCase());   // преобразуем строку в нижнем регистре в массив Character
        Arrays.sort(tempArr, new Comparator<Character>() {   // сортируем с использованием нечувствительного к регистру компаратора
            @Override
            public int compare(Character c1, Character c2) {
                return c1.compareTo(c2);
            }
        });
        StringBuilder sb = new StringBuilder(tempArr.length);   // создаем объект StringBuilder
        for (Character c : tempArr) {
            sb.append(c.charValue());   // добавляем отсортированные символы в объект StringBuilder
        }
        sortedString = sb.toString();   // преобразуем объект StringBuilder в строку
        System.out.println("Original String: " + originalString);
        System.out.println("Sorted String: " + sortedString);
    }

    // метод для преобразования строки в массив Character
    private static Character[] toCharacterArray(String str) {
        Character[] arr = new Character[str.length()];
        for (int i = 0; i < str.length(); i++) {
            arr[i] = str.charAt(i);
        }
        return arr;
    }
}

Скомпилируйте и запустите обновленный код

Скомпилируйте обновленную Java-программу с использованием следующей команды:

javac SortString.java

Запустите Java-программу с использованием следующей команды:

java SortString

Вывод программы будет выглядеть так:

Original String: The quick brown fox jumps over the lazy dog
Sorted String:    abcdeeefghhijklmnoooopqrrsttuuvwxyz

Реализуйте сортировку с использованием традиционного метода

В этом шаге мы реализуем сортировку массива символов с использованием традиционного метода вложенных циклов. Алгоритм сравнивает каждый символ с символами с его правой стороны и меняет местами символы, если правый символ меньше текущего символа.

import java.util.Arrays;

public class SortString {
    public static void main(String[] args) {
        String originalString = "The quick brown fox jumps over the lazy dog";
        String sortedString = "";
        char[] tempArr = originalString.toCharArray();   // преобразуем строку в массив символов
        int n = tempArr.length;
        for (int i = 0; i < n; i++) {
            for (int j = i + 1; j < n; j++) {
                if (tempArr[i] > tempArr[j]) {
                    char temp = tempArr[i];
                    tempArr[i] = tempArr[j];
                    tempArr[j] = temp;
                }
            }
        }
        sortedString = new String(tempArr);   // преобразуем отсортированный массив символов в строку
        System.out.println("Original String: " + originalString);
        System.out.println("Sorted String: " + sortedString);
    }
}

Скомпилируйте и запустите обновленный код

Скомпилируйте обновленную Java-программу с использованием предыдущей команды:

javac SortString.java

Запустите Java-программу с использованием следующей команды:

java SortString

Вывод программы будет выглядеть так:

Original String: The quick brown fox jumps over the lazy dog
Sorted String:    Tabcdeeefghhijklmnoooopqrrstuuvwxyz

Резюме

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