当前位置: 首页 > 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.xdnf.cn/news/1132903.html

相关文章:

  • 力扣面试150(31/150)
  • Python爬虫实战:研究PyYAML库相关技术
  • 工作第一步建立连接——ssh
  • STM32硬件I2C的注意事项
  • UniApp 多端人脸认证图片上传实现
  • Sketch 与 Figma
  • 基于 Python/PHP/Node.js 的淘宝 API 商品数据抓取开发教程
  • 个人笔记(linux/sort与uniq命令)
  • [硬件电路-28]:从简单到复杂:宇宙、芯片与虚拟世界的共通逻辑
  • 快速掌握 Kafka:从核心概念到生产级部署指南
  • 网络安全初级(XSS-labs 1-8)
  • 基于Canal实现MySQL数据库数据同步
  • 数字IC后端培训教程之数字后端项目典型项目案例解析
  • 端侧推理软件栈
  • 智慧农业新图景:物联网如何精准守护作物生长​
  • FCN语义分割笔记(1)
  • XSS-labs 1-8关
  • 系统性学习C语言-第十八讲-C语言内存函数
  • 从零开始的云计算生活——番外4,使用 Keepalived 实现 MySQL 高可用
  • xss-lab1-8关
  • AWS ML Specialist 考试备考指南
  • Liunx练习项目6-创建dns服务器
  • 图机器学习(10)——监督学习中的图神经网络
  • AI Agent开发学习系列 - langchain之LCEL(1):LangChain LCEL链式编排与RAG增强实践
  • 新手向:自动化图片格式转换工具
  • orfeotoolbox ResetMargin
  • 硬件设计学习DAY3——电源Buck电路深度解析:CCM/DCM/BCM模式与电感设计
  • Linux运维新手的修炼手扎之第21天
  • 【论文阅读】A Survey on Knowledge-Oriented Retrieval-Augmented Generation(4)
  • Kotlin比较接口