compareTo()
Метод compareTo() лексикографически сравнивает две строки String и возвращает отрицательное, нулевое или положительное число — удобно для сортировки строк.
Полная статья
Описание
Метод compareTo() позволяет определить, как две строки соотносятся друг с другом в алфавитном (лексикографическом) порядке. Сравнение идёт посимвольно по кодам ASCII: сначала проверяется первый символ, затем второй и так далее, пока не найдётся различие или не закончится одна из строк.
Важно понимать, как устроена таблица ASCII: цифры ('0'–'9') стоят раньше букв, заглавные буквы ('A'–'Z') — раньше строчных ('a'–'z'). Поэтому "Apple" окажется «меньше» "apple", а "123" — «меньше» "abc".
Этот метод удобен, когда нужно не просто проверить равенство строк, а упорядочить их — например, отсортировать список имён или команд.
Синтаксис
myString.compareTo(myString2)
Параметры
myString: переменная типаString— строка, у которой вызывается метод.myString2: переменная типаString— строка, с которой производится сравнение.
Возвращает
a negative number: если myString предшествует myString2 в лексикографическом порядке.0: если строка равна myString2.a positive number: если myString идёт после myString2.
Конкретное числовое значение — это разница кодов ASCII первых различающихся символов. На практике важен лишь знак результата, а не его абсолютная величина.
Где применяется
- Сортировка строк — например, упорядочивание массива команд или имён пользователей перед выводом на дисплей.
- Обработка ввода — проверка, что введённая строка лексически не выходит за допустимые границы (например, пароль должен быть «не раньше» определённого значения).
- Поиск в отсортированном массиве — бинарный поиск по массиву строк требует именно такого сравнения.
- Валидация протоколов — разбор команд, которые должны идти в строго определённом порядке.
Практические замечания
- Сравнение чувствительно к регистру:
"hello"и"Hello"не равны. Если регистр не важен, приведите обе строки к одному с помощьюtoLowerCase()перед сравнением. - Пустая строка
""считается «меньше» любой непустой строки. - Если одна строка является префиксом другой (
"cat"и"cats"), более короткая считается «меньшей». - Метод не изменяет ни одну из строк — он только возвращает числовой результат.
- Для простой проверки равенства удобнее использовать метод
equals()— он нагляднее и не требует проверки знака результата.