В список заношу стринги, сортирую .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()));
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Создал небольшую форму пробную, есть задание сменить цвет фонаВсе вроде бы просто
Здравствуйте есть сервлет внутри сервлета устанавливается аттрибут data
Интересно мнение экспертовПрограмма угадывает задуманное число, и пишет за скольо ходов она угадала