介绍
在 Java 中,String 类内部并没有专门用于排序的方法。然而,我们可以利用字符数组可以轻松使用各种算法进行排序的特性。在 Java 中有多种方法可以对字符串进行排序,例如使用 Arrays.sort()
、Arrays.sort()
中的 Comparator
,或者常用的排序算法如 Selection Sort
和 Bubble Sort
。在本实验中,我们将探讨如何使用 Arrays.sort()
方法在 Java 中对字符串进行排序。
在 Java 中,String 类内部并没有专门用于排序的方法。然而,我们可以利用字符数组可以轻松使用各种算法进行排序的特性。在 Java 中有多种方法可以对字符串进行排序,例如使用 Arrays.sort()
、Arrays.sort()
中的 Comparator
,或者常用的排序算法如 Selection Sort
和 Bubble Sort
。在本实验中,我们将探讨如何使用 Arrays.sort()
方法在 Java 中对字符串进行排序。
在这一步中,我们将编写一个 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
在本实验中,我们学习了如何使用 Arrays.sort()
方法对字符串进行排序。我们还学习了如何使用 Comparator
实现不区分大小写的排序,以及如何使用嵌套循环实现传统排序。