You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin集合中已有size属性,count()方法的作用是什么?

Kotlin集合中size属性与count()方法的区别

这是个很实用的问题!先直接给结论:不带参数的count()方法,在List、Array、Map这些集合类型里,底层实现确实就是直接返回size属性的值,就像你给出的示例一样:

val list = listOf(1, 2, 3)
list.size       // 返回3
list.count()    // 同样返回3

val map = mapOf(1 to 1, 2 to 2, 3 to 3)
map.size        // 返回3
map.count()     // 同样返回3

val array = arrayOf(1, 2, 3)
array.size      // 返回3
array.count()   // 同样返回3

那为什么Kotlin还要提供这个看似重复的方法呢?核心原因是**count()有一个带谓词参数的重载版本**——这才是它存在的核心价值,用来快速统计满足特定条件的元素数量,比先过滤再取size更简洁高效。

举几个实际场景的例子:

1. 统计List中满足条件的元素

val numbers = listOf(1, 2, 3, 4, 5, 6)
// 统计偶数的数量
val evenCount = numbers.count { it % 2 == 0 } // 返回3
// 如果用size的话需要多一步过滤,还会创建中间集合
val evenSize = numbers.filter { it % 2 == 0 }.size // 同样返回3,但效率稍低

2. 统计Map中符合条件的键值对

val userMap = mapOf(1 to "Alice", 2 to "Bob", 3 to "Charlie", 4 to "David")
// 统计用户名长度大于4的键值对数量
val longNameCount = userMap.count { (_, name) -> name.length > 4 } // 返回2

总结

  • 不带参数的count()本质是为了API一致性,让你在不需要过滤时,也能使用和带参版本统一的方法调用风格;
  • 带参数的count()才是核心功能,它遍历一次集合就完成计数,避免了创建中间集合的额外开销,比filter().size更高效。

内容的提问来源于stack exchange,提问作者Elye

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 18:02:28