由于==
不适用于数组,我无法有效地创建一组数组(或带有数组键的映射)。我宁愿不接受将我的数组转换为向量或列表或其他东西的性能损失。是否有一种轻量级的方法来定义数组上的自然比较和哈希码,以便我可以将它们粘贴在一个集合中?
最佳答案
使用 WrappedArray
来自 collection.mutable
.它以最小的开销为数组提供了适当的相等性。 apply
, update
etc调用被委托(delegate)给底层数组。还有一些原始类型的特殊类(例如 WrappedArray.ofInt
)以避免装箱和拆箱。
scala> new WrappedArray.ofInt(Array(2, 3, 4))
res35: scala.collection.mutable.WrappedArray.ofInt = WrappedArray(2, 3, 4)
scala> new WrappedArray.ofInt(Array(2, 3, 4))
res36: scala.collection.mutable.WrappedArray.ofInt = WrappedArray(2, 3, 4)
scala> res35 == res36
res37: Boolean = true
关于arrays - Scala:将数组放入 Set 或 Map 的轻量级方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8219541/