Я использую следующий код Java для сортировки значений: -
Collections.sort(values);
Он работает правильно, за исключением того, что сортировка выполняется следующим образом: - 1 10 2 3 4
Iнужно отсортировать следующим образом: - 1 2 3 4 10
Вы можете передать Comparator в вызов sort, чтобы преобразовать строку в число во время сортировки, или сохранить значение как число в первую очередь. При сравнении строк, 10 предшествует 2.
sort
10
2
В качестве альтернативы, определите compareTo в своем классе (и используйте класс, который он реализует Comparable), если вам всегда нужно сортировать одинаково, и пропустите Comparator.
compareTo
Comparable
Comparator
Используйте List<Integer> (а не List<String>, который выглядит так, как вы используете).
List<Integer>
List<String>
Вы сортируете Strings.Вы можете изменить значения для хранения подкласса Number или реализовать свой собственный Comparator для передачи в качестве аргумента сегмента метода sort, который будет выполнять "естественную сортировку".
Strings
Number
См. Этот вопрос дляподробнее: Естественное сравнение строк порядка сортировки в Java - встроено?