Сортировка list1
довольно понятна, так как она просто численно сортирует числа.
В list2
значения хранятся в виде строк. Поэтому он сравнивает и сортирует их по значению ASCII. Цифра 3 имеет значение ASCII 51, 4 имеет значение 52, а 5 имеет значение 53. Таким образом, она работает совершенно корректно, если вы хотите отсортировать слова, это именно то, что вы хотите сделать. [117 ]
Однако, если вы просто хотите отсортировать цифры в правильном порядке, убедитесь, что они int
похожи на list1
. Или вы можете установить ключ в методе сортировки, чтобы привести их как int
с, чтобы он сортировался числовым способом так:
list2.sort(key=int)
Если Вы ожидаете, что данные будут числовыми в некоторой форме и всем, что Вы интересуетесь выполнением, преобразовывает результат в числовое значение, я предложил бы:
for (Object o:list) {
Double.parseDouble(o.toString);
}