Что означает "сравнить две строки лексикографически"?
Сравнение строк в Java
Ответ 1
Исходя из ответов @Bozho и @aioobe, лексикографические сравнения похожи на порядок, который можно найти в словаре.
Класс Java String предоставляет метод .compareTo () для лексикографического сравнения строк. Он используется так "apple".compareTo ("banana").
Возвращением этого метода является int, который можно интерпретировать следующим образом:
- возвращает & lt; 0 тогда строка, вызывающая метод, сначала лексикографически (сначала в словаре)
 - возвращает == 0, тогда две строки лексикографически эквивалентны
 - возвращает> 0, затем параметр, переданный методу 
compareTo, сначала лексикографически. 
Более конкретно, метод обеспечивает первую ненулевую разницу в значениях ASCII.
Таким образом, "computer".compareTo ("comparison") вернет значение (int) 'u' - (int) 'a' (20). Поскольку это положительный результат, параметр ("comparison") в первую очередь лексикографически.
Существует также вариант .compareToIgnoreCase (), который, например, будет возвращать 0 для "a".compareToIgnoreCase ("A");.
Ответ 2
Формулировка "сравнение" мягко вводит в заблуждение. Вы не сравниваете строгое равенство, но для какой строки сначала в словаре (лексиконе).
Это функция, которая позволяет сортировать коллекции строк.
Обратите внимание, что это очень зависит от активной локали. Например, здесь, в Дании, у нас есть символ "å" , который раньше был записан как "aa" и очень отличается от двух одиночных a (EDIT: если произносится как "å" !). Следовательно, датские правила сортировки трактуют два консективных а тождественно на "å" , что означает, что оно идет после z. Это также означает, что датские словари сортируются по-другому, чем английские или шведские.
Ответ 3
Метод String.compareTo(..) выполняет лексикографическое сравнение. Лексикографически == альфебит.
Ответ 4
Сравнение последовательно букв, имеющих одну и ту же позицию друг против друга.. больше похоже на то, как вы заказываете слова в словаре
Ответ 5
Если вы проверите, какая строка будет первой в лексиконе, вы сделали лексикографическое сравнение строк!
Некоторые ссылки:
- Wikipedia - String (информатика) Лексикографический порядок
 - Примечание по сравнению: лексикографическое сравнение между строками
 
Украдено по последней ссылке:
Строка s предшествует строке t в лексикографическом порядке, если
- s является префиксом t или
 - если c и d являются соответственно первыми символами s и t, в которых s и t различаются, то c предшествует d в порядке символов.
 Примечание. Для букв алфавита порядок символов совпадает с алфавитным порядком. Цифры предшествуют буквам, а прописные буквы предшествуют строчным.
Example:
- дом предшествует домашнему хозяйству
 - Домашнее хозяйство предшествует дому
 - композитор предшествует компьютеру
 - H2O предшествует ОТЕЛЬ
 
Ответ 6
Java лексикографически упорядочивает:
- Числа -before-
 - Верхний предел - прежде -
 - Строчные
 
Нечетный, как кажется, это правда... 
 Мне пришлось писать цепочки компараторов, чтобы иметь возможность изменять поведение по умолчанию. 
 Играйте со следующим фрагментом с лучшими примерами строк ввода, чтобы проверить порядок (вам понадобится JSE 8):
import java.util.ArrayList;
public class HelloLambda {
public static void main(String[] args) {
    ArrayList<String> names = new ArrayList<>();
    names.add("Kambiz");
    names.add("kambiz");
    names.add("k1ambiz");
    names.add("1Bmbiza");
    names.add("Samantha");
    names.add("Jakey");
    names.add("Lesley");
    names.add("Hayley");
    names.add("Benjamin");
    names.add("Anthony");
    names.stream().
        filter(e -> e.contains("a")).
        sorted().
        forEach(System.out::println);
}
}
Результат
  1Bmbiza 
Benjamin 
Hayley 
Jakey 
Камбиз 
Саманта 
k1ambiz 
Камбиз
Обратите внимание, что это ответ специфичен для локали. 
Обратите внимание, что я фильтрую имя, содержащее строчную букву a.
Ответ 7
Ниже Алго "сравнить две строки лексикографически"
Введите две строки: строку 1 и строку 2.
for (int i = 0; i & lt; str1.length() && amp; я & lt; str2.length(); я ++)
(Перебрать каждый символ обоих Строки сравнивая их до одного строки заканчивается):
а. Если Unicode значение обоих символов то же самое, затем продолжить;
б. Если Юникод значение символа строка 1 и значение Юникода строки 2 отличается от return (str1 [i] -str2 [i])
если длина строки 1 меньше, чем string2
вернуть str2 [str1.length()]
еще
вернуть str1 [str2.length()]
//Этот метод сравнивает две строки лексикографически
public static int compareCustom(String s1, String s2) { for (int i = 0; i < s1.length() && i< s2.length(); i++) { if(s1.charAt(i) == s2.charAt(i)){ //System.out.println("Equal"); continue; } else{ return s1.charAt(i) - s2.charAt(i); } } if(s1.length()<s2.length()){ return s2.length() - s1.length(); } else if(s1.length()>s2.length()){ return s1.length()-s2.length(); } else{ return 0; } }
если две строки равны, он вернет 0, в противном случае вернет отрицательный или положительное значение
Источник: - Источник