【发布时间】:2019-05-11 07:30:11
【问题描述】:
我想对一些包含数字的字符串进行排序,但排序后,它变成了这样["s1", "s10", "s11", ... ,"s2", "s21", "s22"]。在我搜索后,我发现这个question 有同样的问题。但在我的示例中,我有mutableList<myModel>,我必须将myModel.title 中的所有字符串例如放入可变列表并放入代码下:
val sortData = reversedData.sortedBy {
//pattern.matcher(it.title).matches()
Collections.sort(it.title, object : Comparator<String> {
override fun compare(o1: String, o2: String): Int {
return extractInt(o1) - extractInt(o2)
}
fun extractInt(s: String): Int {
val num = s.replace("\\D".toRegex(), "")
// return 0 if no digits found
return if (num.isEmpty()) 0 else Integer.parseInt(num)
}
})
}
我在.sortedBy 和Collections.sort(it.title) 中有一个错误,请帮我解决这个问题。
【问题讨论】:
-
“我有一个错误”:你会透露哪一个?
-
首先,我必须想办法将 it.title 转换为可变列表。因为 Collections.sort 需要它。我不知道如何将模型中的所有 it.title 推送到可变列表中,然后我认为我必须在 Collections.sort 之前使用 return 来修复 .sortedBy
-
不要混用
Collections.sort和sortedBy。你可能想看看sortWith代替......还有:sortedBy和sortedWith是相似的(它们返回一个新列表),而sortWith在当前列表上运行...... -
接受的答案如何回答您的问题?它比任何其他答案都太复杂了,它使用
Observable/Subscriber,你没有...
标签: android collections kotlin mutablelist