如何比较 Java 中的两个字符串,并按字母顺序定义其中哪一个比另一个小?

我想使用二进制搜索算法来搜索字符串已由用户输入在一个非常大的排序文件。我无法将用户输入的字符串与位于文件中间行的字符串进行比较,以继续我的二进制搜索。

例如,如果用户的字符串是 abcda,而文件的字符串是 abcza,那么很明显,用户的字符串比文件的字符串小。它是如何在 Java 中实现的?如果你能给我一个示例代码就太好了。

190422 次浏览

你可以用

str1.compareTo(str2);

如果 Str1在字典上小于 Str2,则返回 a negative number,如果相等则返回 0,如果大于 Str1则返回 a positive number

例如:

"a".compareTo("b"); // returns a negative number, here -1
"a".compareTo("a"); // returns  0
"b".compareTo("a"); // returns a positive number, here 1
"b".compareTo(null); // throws java.lang.NullPointerException

你没有听说过 Comparable接口是由 String实现的吗? 如果没有,请尝试使用

"abcda".compareTo("abcza")

它将为解决您的问题输出一个良好的根。

如果您想忽略 case,您可以使用以下命令:

String s = "yip";
String best = "yodel";
int compare = s.compareToIgnoreCase(best);
if(compare < 0){
//-1, --> s is less than best. ( s comes alphabetically first)
}
else if(compare > 0 ){
// best comes alphabetically first.
}
else{
// strings are equal.
}
String bigString = null;


for(int i = 0; i < number; i++){
System.out.println("... ");
String sentence = sc.nextLine();
if(bigString == null || sentence.compareTo(bigString) > 0) {
bigString = sentence;
}
}
System.out.println("...: " + bigString);