Введение
В Java внутри класса String нет отдельного метода для сортировки. Однако, мы можем использовать тот факт, что массив символов можно легко отсортировать с использованием различных алгоритмов. В Java есть несколько способов сортировать строки, например, с использованием Arrays.sort(), Comparator в Arrays.sort(), или часто используемых алгоритмов сортировки, таких как Selection Sort и Bubble Sort. В этом лабораторном задании мы рассмотрим, как отсортировать строку в Java с использованием метода Arrays.sort().
Напишите код
В этом шаге мы напишем 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 и традиционную сортировку с использованием вложенных циклов.



