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