【问题标题】:Sort an ArrayList<Any> that contains two type of data classes对包含两种数据类的 ArrayList<Any> 进行排序
【发布时间】:2020-02-06 20:01:15
【问题描述】:

所以我的问题是我有一个包含两种类型数据的 ArrayList。第一个是以下类:

data class TextMessage (
    val content: String,
    val date: Date,
    val type: Int
)

第二个类只改变内容类型。所以我正在创建一个包含这两种类型数据的列表,我想使用日期值对其进行排序,这两种类型都包含它,但我在互联网上没有找到任何可以帮助我的解决方案,实际上我没有不知道是否可以这样做,因为我几天前开始学习 Kotlin。

我希望有人可以帮助我。 谢谢,再见。

【问题讨论】:

  • 请同时发布您的第二节课

标签: android sorting kotlin arraylist


【解决方案1】:

最好你希望这两个类共享一些超类型。例如一个接口。然后,您可以在接口中定义公共属性。像这样的:

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!")
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-18
    • 1970-01-01
    • 2012-06-19
    • 2014-05-05
    • 1970-01-01
    • 2016-11-04
    • 1970-01-01
    • 2019-11-30
    相关资源
    最近更新 更多