【问题标题】:how to get count of "collection set" from list having specific property如何从具有特定属性的列表中获取“集合集”的计数
【发布时间】:2020-02-06 07:37:44
【问题描述】:

我想从具有特定属性的列表中获取集合的计数值 提前致谢

class User(val age = 0, val group = "school")

fun main(
    val list = listof(User(1, "school"), User(2, "school"), User(3, "company"))

    fun getCount() {
        //how to get 2 (the count of set such as ("school", "company").size)
    }
}

【问题讨论】:

标签: kotlin collections


【解决方案1】:

如果我理解你的问题是正确的,你想知道你有多少组(在你的例子 2 中:“学校”和“公司”

您可以创建一个Grouping,例如:

data class User(val age: Int = 0, val group: String = "school")

fun main() {
    val list = listOf(User(1, "school"), User(2, "school"), User(3, "company"), User(16, "banana"))
    println(getCount(list))
    println(getCountOf(list,"banana"))
}

// returns the number of groups
fun getCount(list: List<User>): Int {
    val grouping = list.groupingBy { it.group }.eachCount()
    return grouping.keys.size
}

//returns the size of a given group (0 if group not found)
fun getCountOf(list: List<User>, group: String): Int {
    val grouping = list.groupingBy { it.group }.eachCount()
    return grouping[group] ?: 0
}

【讨论】:

    【解决方案2】:

    您可以将列表过滤到“学校”组中的人,然后计算,也许?

    list .filter { p -> group ==  "school"  }
    

    【讨论】:

    • 什么是组和它?它说“未解决的参考”
    • group 是您的 User 类的属性。您的列表包含用户对象,不是吗?这个 lambda(我从 stackoverflow.com/questions/53952047/… 改编而来)应该为您提供具有组属性“学校”的用户列表。之后,您计算列表中的项目数,它应该会给您预期的结果。
    • 这是本案不需要的原始代码的一部分,我之前没有注意到,抱歉:(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-02
    • 2016-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多