返回介绍

数学基础

统计学习

深度学习

工具

Scala

三、Seq

发布于 2023-07-17 23:38:22 字数 4101 浏览 0 评论 0 收藏 0

  1. Seq 代表序列, 它有长度 length 、且元素从固定的下标 0 开始。

  2. Seq 包含的操作:

    • 下标和长度:

      • xs(i): 获取下标 i 对应的元素。 也可以展开为 xs apply i
      • xs isDefinedAt i : 测试 i 是否是 xs 的一个有效索引。
      • xs.length: 返回 xs 的长度。
      • xs.lengthCompare ys: 对比 xsys 的长度。 如果 xs 长度较短, 则返回 -1; 如果 xs 长度较长,则返回 1; 如果长度相同, 则返回 0 。 如果其中一个序列的长度为无限长, 比较规则仍然有效。
    • 下标检索:

      • xs indexof xxs 中首次出现 x 元素的下标(允许多个存在)。
      • xs lastIndexOf xxs 中最后一个等于 x 元素的下标(允许多个存在)。
      • xs indexOfSlice ysxs 中首个出现序列 ys 的位置。
      • xs lastIndexOf ysxs 中最后一个出现序列 ys 的位置。
      • xs indexWhere pxs 中首个满足 p 的元素位置(允许多个存在)。
      • xs segmentLength (p, i)xs 中从 i 开始的、连续满足 p 的片段的最大长度。
      • xs prefixLength pxs 中连续满足 p 的最长前缀长度。
    • 添加:

      • x +: xs: 将 x 追加到 xs 头部得到新序列。
      • xs +: x : 将 x 追加到 xs 尾部得到新序列。
      • xs padTo (len, x): 将x 追加到 xs 尾部、直到形成长度为 len 的新序列。
    • 更新:

      • xs patch(i, ys, r): 将 xs 中从下标 i 开始的 r 个元素替换为 ys 序列得到新序列。
      • xs updated(i, x): 将xs 中下标为 i 的元素替换为 x 得到新序列。
      • xs(i) = x: 将xs 中下标 i 的元素更新为x 。 也可以展开为 xs.update(i, x), 但是仅对 mutable.Seq 有效。
    • 排序:

      • xs sorted: 用 xs 元素类型的标准顺序对 xs 排序, 得到新的排序好的序列。
      • xs sortWith lessThan: 以 lessThan 作为比较操作对 xs 排序, 得到新的排序好的序列。
      • xs sortBy f: 以 f 作为比较函数对 xs 排序, 得到新的排序好的序列。
    • 反转:

      • xs.reverse: 将 xs 顺序翻转,得到新的翻转后的序列。
      • xs.reverseIterator: 返回一个迭代器, 其迭代结果是 xs 的逆序对应的元素。
      • xs.reverseMap(f) : 逆序对 xs 的元素映射 f 后得到新的序列
    • 比较:

      • xs startsWith ysxs 是否以 ys 开始。
      • xs endsWith ysxs 是否以 ys 结束
      • xs contains xxs 是否包含 x
      • xs containSlice ysxs 是否包含和 ys 相等的连续子序列。
      • (xs corresponds ys)(p): 测试 xsys 对应元素是否满足二元条件函数 p
    • 集合操作:

      • xs intersect ys: 返回序列 xsys 的交集, 保持 xs 中的顺序
      • xs diff ys: 返回序列 xsys 的差集, 保持 xs 中的顺序。
      • xs union ys: 返回序列 xsys 的并集, 等同于 xs ++ ys。
      • xs.distinct : 返回 xs 不包含重复元素的子序列。
  3. Seq 的下标和长度操作apply/isDefinedAt/length/indices/lengthCompare

    • Seq 而言,.apply 操作的含义是下标索引。
    • 另外, Seqlength 方法是通用集合的 size 方法的别名。
    • lengthCompare 允许你对两个序列的长度进行比较, 哪怕其中一个序列的长度是无限的。
  4. 如果序列是可变的, 则它会提供额外的、带有副作用的 update 方法, 从而允许序列元素被更新。

    注意 update 方法和 updated 方法的区别:

    • update 方法用于原地修改序列的某个元素值, 且仅用于可变序列。
    • updated 方法对所有序列都可用, 并且总是返回新的序列,而不是修改原序列。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文