当前位置: 首页 > news >正文

分块(chunked) vs 滑动窗口(windowed)

在 Kotlin 中,chunked()(分块)和 windowed()(滑动窗口)都是用于将集合拆分成子集合的方法,但它们的工作方式和应用场景不同


chunked()(分块)

  • 含义:将集合划分为一个个不重叠的子块(chunk),每个子块长度相等(最后一个块可能不足)。

  • 特点无重叠一步跳跃一个块

  • 函数签名fun <T> Iterable<T>.chunked(size: Int): List<List<T>>

示例:

val list = listOf(1, 2, 3, 4, 5, 6, 7)
val chunks = list.chunked(3)
println(chunks) // 输出: [[1, 2, 3], [4, 5, 6], [7]]

windowed()(滑动窗口)

含义:使用一个窗口在集合上滑动,可以重叠,可以设置滑动的步长。特点:可重叠、可定步长、可以控制是否包含不足窗口长度的子集合。函数签名:
    fun <T> Iterable<T>.windowed(size: Int,step: Int = 1,partialWindows: Boolean = false
): List<List<T>>

示例 1:默认滑动步长为 1(有重叠)

val list = listOf(1, 2, 3, 4, 5)
val windows = list.windowed(3)
println(windows) // 输出: [[1, 2, 3], [2, 3, 4], [3, 4, 5]]

示例 2:设置步长为 2(可能不重叠)

val windows = list.windowed(3, step = 2)
println(windows) // 输出: [[1, 2, 3], [3, 4, 5]]

示例 3:保留不足窗口大小的部分(partialWindows

val windows = list.windowed(3, step = 2, partialWindows = true)
println(windows) // 输出: [[1, 2, 3], [3, 4, 5], [5]]

📌 总结对比:

特性chunked()windowed()
子集合是否重叠❌ 不重叠✅ 可重叠
步长控制❌ 不可指定步长✅ 可指定步长 step
不足长度是否保留✅ 自动保留最后一组✅ 需设定 partialWindows = true
使用场景分组处理(如分页)滑动窗口分析(如模式识别、时间序列)
http://www.dtcms.com/a/282905.html

相关文章:

  • 【25-cv-07929】Keith携Lisa Audit向日葵画作发案
  • 性能测试过程中监控linux服务器资源情况
  • c语言常用的字符串函数简介概括
  • 【基于飞浆训练车牌识别模型】
  • 2.库操作
  • cookie和session、favicon.ico
  • 管家婆辉煌ERP登录报错:HTTP 错误 404.2
  • 嵌入式下快速傅里叶变换(FFT)C语言库kissfft
  • 图机器学习(9)——图正则化算法
  • 2. nth-child 和 nth-of-type 区别
  • xss-labs通关
  • k8s之持久化存储流程
  • 小架构step系列16:代码文档
  • 深度点评:2025 年机床钣金加工 TOP10 终极点评
  • 批量文件重命名工具 香菇重命名v0.2
  • Linux运维新手的修炼手扎之第21天
  • 调试bug记录
  • 如何用山海鲸轻松构建3D智慧大屏?
  • 【开源.NET】一个 .NET 开源美观、灵活易用、功能强大的图表库
  • 3DGS之COLMAP
  • 能行为监测算法:低成本下的高效管理
  • LIN通信协议入门
  • AI学习笔记三十一:YOLOv8 C++编译测试(OpenVINO)
  • 构建足球实时比分APP:REST API与WebSocket接入方案详解
  • PandaWiki与GitBook深度对比:AI时代的知识管理工具,选谁好?
  • 自动控制原理知识地图:舵轮、路径与导航图
  • 经典排序算法之归并排序(Merge Sort)
  • Linux内核IPv4路由查找:LPC-Trie算法的深度实践
  • 记录一道sql面试题3
  • 【Docker基础】Dockerfile多阶段构建:Multi-stage Builds详解