Не ясна логика Collections.sort()

174
04 января 2022, 06:40

В список заношу стринги, сортирую .sort()-ом ожидаю увидеть прорядок но не вижу его

private static ArrayList<String> strings;
public static void main(String[] args) throws Exception{
    // TODO Auto-generated method stub
    strings = new ArrayList<>();
    strings.add("Rumba");
    strings.add("Boom");
    strings.add("Madrid");
    strings.add("Kuragas");
    strings.add("Lambdarok");
    strings.add("Rom");
    strings.add("Zambialux");
    strings.add("Do");
    strings.add("Ken");
    strings.add(".");
     strings.forEach(System.out::println);
     Collections.sort(strings);
     strings.forEach(System.out::println);
     }

почему вместо :

Do
Ken
Rom
Boom
Rumba
Madrid
Kuragaz
Lambdarok
Zambialux

Я вижу :

Boom
Do
Ken
Kuragas
Lambdarok
Madrid
Rom
Rumba
Zambialux

Скажите пожалуйста. Или укажите что почитать, если знаете.

Answer 1

По умолчанию строки сортируются в лексикографическом порядке.

Сначала идет сравнение по первой букве. Чем она раньше в алфавите - тем строка будет раньше в результирующем списке.

Если первые буквы одинаковые - сравниваются следующие и т.д.

Подробнее о лексикографическом порядке

Если хочется сортировать по длине строки - можно создать класс, имплементирующий интерфейс Comparator и передать его экземпляр вторым аргументом в вызов Collections.sort.

Или можно вторым параметром передать лямбду, которая также будет явно сравнивать строки по длине:

Collections.sort(strings, (a, b) -> Integer.compare(a.length(), b.length()));
READ ALSO
Выделяемая память для Java

Выделяемая память для Java

Передаю в JVM command line parameters:

191
Смена цвета фона основного окна

Смена цвета фона основного окна

Создал небольшую форму пробную, есть задание сменить цвет фонаВсе вроде бы просто

209
Java JSP , перенаполнение аттрибута (setAttribute)

Java JSP , перенаполнение аттрибута (setAttribute)

Здравствуйте есть сервлет внутри сервлета устанавливается аттрибут data

155
Вопрос по ООП Java. Нужен совет

Вопрос по ООП Java. Нужен совет

Интересно мнение экспертовПрограмма угадывает задуманное число, и пишет за скольо ходов она угадала

78