所以我的问题是我有一个包含两种类型数据的 ArrayList。第一个是以下类:
data class TextMessage (
val content: String,
val date: Date,
val type: Int
)
第二个类只改变内容类型。所以我正在创建一个包含这两种类型数据的列表,我想使用日期值对其进行排序,这两种类型都包含它,但我没有在互联网上找到任何对我有帮助的解决方案,实际上我没有我不知道是否可以这样做,因为我几天前开始学习 Kotlin。
我希望有人能帮助我。 谢谢,再见。
最佳答案
您最好希望这两个类共享一些父类(super class)型。例如一个接口(interface)。然后,您可以在界面中定义通用属性。像这样:
interface Message {
val date: Date
}
data class TextMessage (
val content: String,
override val date: Date,
val type: Int
) : Message
data class OtherMessage (
override val date: Date
) : Message
然后您可以通过执行以下操作对 Message
列表进行排序:
val sortedList = listOfMessages.sortedBy { it.date }
如果您不能像这样更改您的类,您将不得不依赖可能引发异常的检查。像这样:
val sortedList = listOfAny.sortedBy {
when(it) {
is TextMessage -> it.date
is OtherMessage -> it.date
else -> throw IllegalArgumentException("Unknown type for sorting!")
}
}
关于android - 对包含两种数据类的 ArrayList<Any> 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58304876/