Как использовать compareto для перечисления слов в алфавитном порядке?

Я новичок в Java и у меня простой вопрос относительно метода compareTo().

При использовании кода

String Name1 = "alan";
System.out.println(Name1.compareTo("a"));

String Name2 = "bob";
System.out.println(Name2.compareTo("a"));

String Name3 = "carl";
System.out.println(Name3.compareTo("a"));

Я ожидаю, что на выходе будет 0 1 2, вместо этого я получаю 3 1 2

Я знаю, это может показаться простым, но я искренне озадачен. Я бы подумал, что буква «а» в «алан» будет сравниваться с «а» и, таким образом, даст 0. Если бы кто-то мог просто объяснить, я был бы очень признателен.

У меня сложилось впечатление, что compareTo принимает в уравнение только первую букву слова «алан», как это было с «бобом» и «карлом». Если бы я хотел использовать только первую букву, как бы я это сделал? Я намерен расположить эти имена в алфавитном порядке.


person Eugene Thornhill    schedule 18.11.2018    source источник
comment
Почему 0? а и алан не одно и то же. Почему 1? Почему 2? Вам нужно объяснить свои ожидания, поскольку единственное, что вы можете ожидать, это положительное число.   -  person Hovercraft Full Of Eels    schedule 18.11.2018
comment
У меня сложилось впечатление, что compareTo принимает в уравнение только первую букву слова «алан», как это было с «бобом» и «карлом». Если бы я хотел использовать только первую букву, как бы я это сделал? Я намерен расположить эти имена в алфавитном порядке.   -  person Eugene Thornhill    schedule 18.11.2018
comment
Прочитайте ответ в повторяющемся вопросе, но, что более важно, в String API в разделе compareTo. Это объяснит все, что вам нужно знать.   -  person Hovercraft Full Of Eels    schedule 18.11.2018
comment
Из String API: возвращает: значение 0, если строка аргумента равна этой строке; значение меньше 0, если эта строка лексикографически меньше строкового аргумента; и значение больше 0, если эта строка лексикографически больше строкового аргумента. -- Итак, опять же, все, что вы можете ожидать, это 0 или положительные или отрицательные числа. Вы не можете делать никаких предположений о фактических значениях этих чисел.   -  person Hovercraft Full Of Eels    schedule 18.11.2018
comment
Если вы хотите сравнить только первую букву, используйте substring(0, 1)   -  person Hovercraft Full Of Eels    schedule 18.11.2018
comment
Получилось, спасибо @HovercraftFullOfEels   -  person Eugene Thornhill    schedule 18.11.2018