arrays - Scala:将数组放入 Set 或 Map 的轻量级方法

标签 arrays scala set equals hashcode

由于==不适用于数组,我无法有效地创建一组数组(或带有数组键的映射)。我宁愿不接受将我的数组转换为向量或列表或其他东西的性能损失。是否有一种轻量级的方法来定义数组上的自然比较和哈希码,以便我可以将它们粘贴在一个集合中?

最佳答案

使用 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/

相关文章:

php - 无法从 PHP json_encode 转换或访问 JSON 对象

c++ - Eigen:从 C++ 数组高效实现矩阵

python - 使用 Python/NLTK 提取一组单词,然后将其与标准英语词典进行比较

java - Hibernate <set> 来自连接表的键

C++: vector<set<string>> 函数初始化

Java处理数组索引越界

python - 基于另一个列表对列表元素进行分组

javascript - 如何在scala函数中传递参数对象?

scala - 类型别名以避免类型细化中的名称冲突

performance - 为什么我的Scala尾递归比while循环快?