Как я могу сравнить две строки в Java и определить, какая из них меньше других по алфавиту? - PullRequest
62 голосов
/ 01 марта 2011

Я хочу использовать алгоритм двоичного поиска для поиска строки, которая была введена пользователем в очень большой отсортированный файл. Я не могу сравнить строку, введенную пользователем, со строкой, расположенной в средней строке файла, чтобы продолжить мой двоичный поиск.

Например, если строка пользователя abcda и строка файла abcza, очевидно, что строка пользователя меньше строки файла. Как это реализовано в Java? было бы здорово, если бы вы могли помочь мне с примером кода.

Ответы [ 3 ]

117 голосов
/ 01 марта 2011

Вы можете использовать

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
6 голосов
/ 03 июля 2013

Если вы хотите игнорировать регистр, вы можете использовать следующее:

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 голосов
/ 01 марта 2011

Разве вы не слышали об интерфейсе Comparable, реализуемом String?Если нет, попробуйте использовать

"abcda".compareTo("abcza")

, и он выведет хороший корень для решения вашей проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...