Java数据结构,串用compareTo方法比较两个字符串,排序规则为字典排序,当字母相同时,则长度从大到小排序
时间: 2024-12-23 11:26:34 浏览: 6
在Java中,如果你想按照字典顺序(即字母升序)比较字符串,并在字母相同时根据字符串长度进行降序排序,你可以利用`String`类的`compareTo()`方法。这个方法会返回一个整数值:
1. 当两个字符串完全相等时,`compareTo()`方法会返回0,表示它们在排序上相等。
2. 如果第一个字符串在字母表中排在第二个前面,那么它会返回一个小于0的数。
3. 同理,如果第一个字符串在字母表中排在第二个后面,返回一个大于0的数。
为了根据长度排序,你需要先按照字典顺序进行基本的`compareTo()`操作得到原始的排序结果,然后结合额外的条件进行调整。这里是一个简单的示例,展示如何通过自定义比较器(Comparator)来实现这样的排序:
```java
import java.util.Arrays;
import java.util.Comparator;
class CustomStringComparator implements Comparator<String> {
@Override
public int compare(String s1, String s2) {
// 先按字典顺序比较
int compareResult = s1.compareTo(s2);
// 字母相同则按长度降序
if (compareResult == 0) {
return Integer.compare(s2.length(), s1.length()); // 长度大的放前面
}
return compareResult; // 返回原始的字典顺序比较结果
}
}
public class Main {
public static void main(String[] args) {
String[] strings = {"abc", "a", "ab", "aa", "ac"};
Arrays.sort(strings, new CustomStringComparator());
for (String str : strings) {
System.out.println(str);
}
//
阅读全文