我必须按lastName和firstName对对象列表进行排序(如果多个对象存在相同的lastName)。我还必须对这些应用Collator。
假设我可以对一个属性执行此操作
val collator = Collator.getInstance(context.getResources().getConfiguration().locale)
myList.sortedWith(compareBy(collator, { it.lastName.toLowerCase() }))
但是是否可以将另一个限制也应用于按firstName排序?
答案 0 :(得分:3)
您可以使用arr.reduce() - left-to-right
添加其他排序条件:
thenBy
答案 1 :(得分:1)
最简单的方法是将选择器lambda中的两个属性串联起来:
myList.sortedWith(
compareBy(collator) { "${it.lastName} ${it.firstName}".toLowerCase() }
)