一、按字典序排序
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方法取出子串并排序。