在Kotlin中,我如何分组

时间:2015-11-14 19:01:11

标签: kotlin

我想按照其泛型类型参数的子类型对列表进行分组。

这是一个包含三种类型对象的列表,它们都是某种类型A的子类型。

我最接近的是it.javaClass.typeNameit.javaClass.kotlin

前者创建了Strings的键,这不是理想的,但我可以处理。后者创建KClassImpl的密钥,我实际上无法导入,更不用说创建。的实例了。

如何分组,然后访问生成的地图中的不同键?

感谢。

1 个答案:

答案 0 :(得分:7)

您可以将kotlin类实例称为Foo :: class

data class Person(
    val firstName : String,
    val lastName : String
)

data class City(
    val name : String,
    val population: Int
)


fun main(args: Array<String>) {

    val list = listOf(
        Person("John", "Doe"),
        Person("Eugene", "Cuckoo"),
        City("London", 8500000),
        City("Berlin", 3500000),
        City("Hötyökmáró", 2)
    )

    val grouped = list.groupBy { it.javaClass.kotlin }

    println("Persons: ${grouped[Person::class]}")
    println("Cities: ${grouped[City::class]}")

}