gpt4 book ai didi

arrays - Array 与 ArraySeq 比较

转载 作者:行者123 更新时间:2023-12-02 00:09:15 25 4
gpt4 key购买 nike

这是一个有点普遍的问题,但我想知道是否有人可以建议我使用 ArrayArraySeq 相比有何优势。据我所知,Array 是 java Array 的 scala 表示,其 API 中没有太多成员,而 ArraySeq 似乎包含很多成员。更丰富的API。

最佳答案

实际上,您可以选择四种不同的类来获得可变的类似数组的功能。

Array + ArrayOps
WrappedArray
ArraySeq
ArrayBuffer

Array 是一个普通的旧 Java 数组。这是迄今为止对基元数组进行低级访问的最佳方法。没有任何开销。此外,由于隐式转换为 ArrayOps,它可以像 Scala 集合一样工作,它获取底层数组,应用适当的方法,并在适当的情况下返回一个新数组。但由于 ArrayOps 并非专门用于基元,因此它很慢(就像装箱/拆箱一样慢)。

WrappedArray 是一个普通的旧 Java 数组,但包含在 Scala 的所有集合中。它与 ArrayOps 之间的区别在于,WrappedArray 返回另一个 WrappedArray,因此至少您不必重新执行操作而产生开销ArrayOps 一遍又一遍地执行您的 Java 原始数组的每个操作。当您与 Java 进行大量互操作并且需要传入普通的旧 Java 数组时,使用它非常有用,但在 Scala 方面您需要方便地操作它们。

ArraySeq 将其数据存储在普通的旧 Java 数组中,但它不再存储基元数组;一切都是对象数组。这意味着基元在传入的过程中被装箱。如果您想多次使用基元,这实际上很方便;由于您已经存储了装箱副本,因此您只需将它们拆箱,而不是在每次通用操作中装箱和拆箱。

ArrayBuffer 的作用类似于数组,但您可以从中添加和删除元素。如果您打算一直使用 ArraySeq,为什么不增加在使用过程中更改长度的灵 active 呢?

关于arrays - Array 与 ArraySeq 比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5028551/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com