所以我的问题是我有一个包含两种类型数据的ArrayList。第一个是以下类:
data class TextMessage (
val content: String,
val date: Date,
val type: Int
)
第二个类仅更改内容类型。因此,我正在创建一个包含这两种数据的列表,我想使用日期值对它们进行排序,这两种类型都包含它,但是我没有找到任何可以帮助我的解决方案,实际上我不知道不知道是否可以这样做,因为几天前我开始学习Kotlin。
我希望有人能帮助我。 谢谢,再见。
答案 0 :(得分:4)
最好让两个类共享某种超级类型。例如界面。然后,您可以在接口中定义通用属性。像这样:
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!")
}
}