Как я могу сравнить две строки в java и определить, какая из них меньше, чем другая в алфавитном порядке?
Я хочу использовать алгоритм бинарного поиска для поиска строки, введенной пользователем в очень большом отсортированном файле. Я не могу сравнить строку, введенную пользователем, с строкой, которая была расположена в средней строке файла, чтобы продолжить мой двоичный поиск.
Например, если пользовательская строка abcda
и строка файла abcza
, очевидно, что пользовательская строка меньше, чем строка файла. Как это реализовано в java? это будет здорово, если вы сможете помочь мне с образцом кода.
Ответы
Ответ 1
Ты можешь использовать
str1.compareTo(str2);
Если str1 лексикографически меньше, чем str2, будет возвращено a negative number
, 0
если оно равно, или a positive number
если str1 больше.
Например,
"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
Ответ 2
Если вы хотите игнорировать дело, вы можете использовать следующее:
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.
}
Ответ 3
Разве вы не слышали о интерфейсе Comparable
, который реализуется String
? Если нет, попробуйте использовать
"abcda".compareTo("abcza")
И он выдаст хороший корень для решения вашей проблемы.