Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays Scala:将数组放入集合或映射的轻量级方法_Arrays_Scala_Set_Equals_Hashcode - Fatal编程技术网

Arrays Scala:将数组放入集合或映射的轻量级方法

Arrays Scala:将数组放入集合或映射的轻量级方法,arrays,scala,set,equals,hashcode,Arrays,Scala,Set,Equals,Hashcode,由于==不适用于数组,因此我无法有效地创建一组数组(或使用数组键进行映射)。我不想因为将数组转换为向量、列表或其他东西而受到性能的影响。是否有一种轻量级的方法来定义数组上的自然比较和哈希代码,以便我将它们粘贴到一个集合中?使用fromcollection.mutable。它以最小的开销为数组提供适当的相等性apply,updateetc调用被委托给底层数组。此外,还有一些用于基本类型的特殊类(例如,WrappedArray.ofit),以避免装箱和拆箱 scala> new Wrapped

由于
==
不适用于数组,因此我无法有效地创建一组数组(或使用数组键进行映射)。我不想因为将数组转换为向量、列表或其他东西而受到性能的影响。是否有一种轻量级的方法来定义数组上的自然比较和哈希代码,以便我将它们粘贴到一个集合中?

使用from
collection.mutable
。它以最小的开销为数组提供适当的相等性
apply
update
etc调用被委托给底层数组。此外,还有一些用于基本类型的特殊类(例如,
WrappedArray.ofit
),以避免装箱和拆箱

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

或者只需
genericWrapArray(数组(2,3,4))
,它位于
Predef
中,因此不需要import@LuigiPlinge:谢谢!我不知道。还有一些特定于原语的数组包装方法:
wrapIntArray
wrapFloatArray
等,这可能会避免原语数组的自动装箱。值得注意的是,
wrapedarray
不是
array
的子类(
array
final
),因此,您必须声明您的
集合
包含
WrappedArray
IndexedSeq
或其他内容。