В список заношу стринги, сортирую .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
Скажите пожалуйста. Или укажите что почитать, если знаете.
По умолчанию строки сортируются в лексикографическом порядке.
Сначала идет сравнение по первой букве. Чем она раньше в алфавите - тем строка будет раньше в результирующем списке.
Если первые буквы одинаковые - сравниваются следующие и т.д.
Подробнее о лексикографическом порядке
Если хочется сортировать по длине строки - можно создать класс, имплементирующий интерфейс Comparator и передать его экземпляр вторым аргументом в вызов Collections.sort
.
Или можно вторым параметром передать лямбду, которая также будет явно сравнивать строки по длине:
Collections.sort(strings, (a, b) -> Integer.compare(a.length(), b.length()));
Виртуальный выделенный сервер (VDS) становится отличным выбором
Создал небольшую форму пробную, есть задание сменить цвет фонаВсе вроде бы просто
Здравствуйте есть сервлет внутри сервлета устанавливается аттрибут data
Интересно мнение экспертовПрограмма угадывает задуманное число, и пишет за скольо ходов она угадала