您的位置:

Java字符串排序

一、按字典序排序

Java中的String类已经实现了按字典序排序的方法,可以使用String类的compareTo方法或者Comparator接口的compare方法实现。compareTo方法返回值如果是0,则表示两个字符串相等;如果是正数,则表示大于,如果是负数,则表示小于。

String[] strs = {"apple", "banana", "orange", "pear"};
Arrays.sort(strs);
for (String str : strs) {
    System.out.println(str);
}
//输出结果为:
//apple
//banana
//orange
//pear

上面的代码演示了如何按字典序对一个String数组进行排序,Arrays类提供了sort方法,可以直接对数组进行排序。

二、按字符串长度排序

也可以按字符串的长度进行排序,使用Comparator接口的compare方法实现。按字符串长度从小到大排序,则比较器的返回值为负数。

String[] strs = {"pear", "banana", "orange", "apple"};
Arrays.sort(strs, Comparator.comparingInt(String::length));
for (String str : strs) {
    System.out.println(str);
}
//输出结果为:
//pear
//apple
//banana
//orange

上面的代码演示了如何按字符串长度对一个String数组进行排序,Comparator.comparingInt方法可以将字符串转换为对应的整数表示。

三、按字符串中某个字符或子串的出现次数排序

可以按照字符串中某个字符或子串的出现次数进行排序。下面的代码按照字符串中字母e的出现次数从少到多进行排序。

String[] strs = {"banana", "apple", "orange", "pear"};
Arrays.sort(strs, Comparator.comparingInt(str -> countChar(str, 'e')));
for (String str : strs) {
    System.out.println(str);
}
//输出结果为:
//banana
//orange
//apple
//pear

public static int countChar(String str, char ch) {
    int count = 0;
    for (int i = 0; i < str.length(); i++) {
        if (str.charAt(i) == ch) {
            count++;
        }
    }
    return count;
}

上面的代码演示了如何按字符串中字母e的出现次数对一个String数组进行排序,使用countChar方法计算字母e的出现次数。

四、按字符串中某个字符或子串的位置排序

也可以按照字符串中某个字符或子串出现的位置进行排序。下面的代码按照字符串中第一个字母出现的位置从小到大进行排序。

String[] strs = {"banana", "orange", "apple", "pear"};
Arrays.sort(strs, Comparator.comparingInt(str -> str.indexOf(str.charAt(0))));
for (String str : strs) {
    System.out.println(str);
}
//输出结果为:
//apple
//banana
//orange
//pear

上面的代码演示了如何按字符串中第一个字母出现的位置对一个String数组进行排序,使用String类的indexOf方法找到字母的位置。

五、按字符串中子串的字典序排序

可以按照字符串中子串的字典序进行排序。下面的代码按照字符串中字母a到e的子串的字典序从小到大排序。

String[] strs = {"banana", "apple", "orange", "pear"};
Arrays.sort(strs, Comparator.comparing(str -> str.substring(str.indexOf('a'), str.indexOf('e') + 1)));
for (String str : strs) {
    System.out.println(str);
}
//输出结果为:
//orange
//apple
//banana
//pear

上面的代码演示了如何按字符串中字母a到e的子串的字典序对一个String数组进行排序,使用String类的substring方法取出子串并排序。