jdk中在String类提供了一个字符串按照ASCII比较的方法compareTo(String)
例如,”abc”.compareTo(“ABC”)结果为32,它首先计算第一个字符的ASCII再相减,如果第一个字符相等,会自动计算第二个字符,以此循环,如果最终相等得到0,而大于0小于0则表示不相等。
下面使用此方法,并配合冒泡排序实现字符串数组排序。
public static void main(String []args){
String[] arr_str =new String[]{"abc","aed","afg","fge","Ade"};
System.out.println("排序前:"+Arrays.toString(arr_str));
bubble_sort_str(arr_str); // 冒泡排序
System.out.println("排序后:"+Arrays.toString(arr_str));
}
private static void bubble_sort_str(String[] arr_str) {
String t;
// 利用冒泡排序法进行相关的排序
for (int i = 0; i < arr_str.length-1; i++) { // 需要n-1趟
for(int j=0;j<arr_str.length-1-i;j++){
// >0:升序, <0:降序
if(arr_str[j].compareTo(arr_str[j+1])>0){
// 数组元素间进行调换
t = arr_str[j];
arr_str[j] = arr_str[j+1];
arr_str[j+1] = t;
}
}
}
}
程序运行结果如下:
- 排序前:[abc, aed, afg, fge, Ade]
- 排序后:[Ade, abc, aed, afg, fge]
字符串排序有特定用途,比如文件夹中的文件名排序时就需要使用,如果不使用String类的compareTo(String)方法,实现起来比较困难,需要记住此方法。