Когда вы заявляете, что вам нужен MutableList
, но пока его нет, вам следует использовать sortedBy
или sortedWith
(в случае, если вы хотите работать с компаратором), вместо этого вы получаете только (новый) список из вашего текущего, например:
val yourMutableSortedList = reversedData.sortedBy {
pattern.find(it)?.value?.toInt() ?: 0
}.toMutableList() // now calling toMutableList only because you said you require one... so why don't just sorting it into a new list and returning a mutable list afterwards?
Возможно, вы захотите воспользоваться compareBy
(или Javas Comparator.comparing
) для sortedWith
.
Если вы просто хотите отсортировать существующий изменяемый список, используйте sortWith
(или Collections.sort
):
reversedData.sortWith(compareBy {
pattern.find(it)?.value?.toInt() ?: 0
})
// or using Java imports:
Collections.sort(reversedData, Compatarator.comparingInt {
pattern.find(it)?.value?.toInt() ?: 0 // what would be the default for non-matching ones?
})
Конечно, вы также можете поиграть с другими помощниками компаратора (например, микширование последних нулей или подобное), например:
reversedData.sortWith(nullsLast(compareBy {
pattern.find(it)?.value
}))
Для приведенных выше примеров я использовал следующее Regex
:
val pattern = """\d+""".toRegex()