我有一个叫Class的类,它有一个叫dayOfWeek的属性.此属性属于DayOfWeek类型.

我有一个班级的列表,我想判断一周中有多少天出现在这个列表上.因此,例如,如果我有8个类,其中3个是星期五,2个是星期三,3个是星期一,这个方法应该返回3(因为这个列表上有3个不同的星期(星期一,星期三和星期五)).

是否有内置的方法,或者我应该创建?

如果我需要创建它,我做了这个:

inline fun <T, P> Iterable<T>.countUnique(block: (T) -> P): Int {
    if (this is Collection && isEmpty()) return 0
        var count = 0
        val list: ArrayList<P> = arrayListOf()
        for (element in this) {
            val property = block(element)
            if (list.contains(property).not()) {
                list.add(property)
                count++
            }
        }
        return count
    }
}

推荐答案

你可以在你的列表中使用这个:

distinctBy(Class::dayOfWeek).count()

Kotlin相关问答推荐

Lambda和普通Kotlin函数有什么区别?

如何进行基于lambda/谓词的两个列表的交集?

在构造函数中创建内部类实例时,只能使用包含类的接收器调用内部类的构造函数

如何在不基于数据 map 的情况下将图例添加到lets plot kotlin

如何检测一个值是否是Kotlin中的枚举实例?

当我通过媒体通知更改音乐时不要更新我的 UI

ActivityResultContracts TakePicture 结果总是返回 false

如何将光标从一个文本字段传递到 Jetpack Compose 中的其他文本字段?

Jetpack compose 可滚动表格

如何使用 Android CameraX 自动对焦

Kotlin JS JSON 反序列化

如何使用 Findbugs 避免 kotlin 文件

如何用 kotlin 打包 List

Mockito 的 argThat 在 Kotlin 中返回 null

Kotlin 具体化的泛型不会按计划保持类型

使用 Kotlin 创建自定义 Dagger 2 范围

项目未与 Gradle 链接

Kotlin扩展函数与成员函数?

Kotlin 中内部可见性修饰符的范围

Kotlin中默认导入哪些包/函数?