Как сортировать массива
Сортирую строку. Для сортировки применяю метод: sorted = listValue.stream().sorted().collect(Collectors.toList());.При сортировке почему-то берёт во внимание только первые цифры. Если входной массив1 2 8 7 9, то отсортирует отлично, а если 1 8 9 81 17, то будет так: 1 17 8 81 9`. Почему так получается, как это исправить?
Ответы (1 шт):
Автор решения: Nowhere Man
→ Ссылка
Если данные в списке представляют собой числа в строковом представлении, следует использовать вариант Stream::sorted(Comparator<? super T> comparator) с кастомным компаратором (в данном случае Comparator::comparingInt(ToIntFunction<? super T> keyExtractor):
List<Object> sorted = listValue.stream()
.sorted(Comparator.comparingInt(x -> Integer.parseInt(Objects.toString(x))))
.collect(Collectors.toList());