Scala:将元素追加到数组的最佳方式是什么?

说我有一个Array[Int]

 val array = Array( 1, 2, 3 ) 

现在我想追加一个元素到数组中,比如4 ,如下例所示:

 val array2 = array + 4 // will not compile 

我当然可以使用System.arraycopy() ,并自己做这个,但是必须有一个Scala库函数,这是我根本找不到的。 感谢任何指针!

笔记:

  1. 我知道我可以追加另一个元素数组,如下面的代码,但是看起来太圆了:

     val array2b = array ++ Array( 4 ) // this works 
  2. 我知道列表与数组的优点和缺点,在这里我出于各种各样的原因,特别感兴趣的扩展数组。

编辑1

感谢指向:+运算符方法的答案。 这是我正在寻找的。 不幸的是,它比使用arraycopy的自定义append()方法实现要慢 – 约慢两到三倍。 看SeqLike[]中的实现,创build一个构build器,然后将数组添加到其中,然后通过构build器完成追加,然后构build器被呈现。 不是一个好的数组实现。 我做了一个比较两种方法的快速基准,看十个周期中最快的时间。 做一千万重复的单项附加到某个类Foo一个8元素数组实例需要3.1秒, :+和1.7秒与一个简单的append()方法,使用System.arraycopy(); Long的8元素数组中执行1000万个单项追加重复操作需要2.1秒, :+和0.78秒的简单append()方法。 不知道如果这不能在Array库中定制的Array自定义实现?

编辑2

值得一提的是,我提交了一张票: https : //issues.scala-lang.org/browse/SI-5017

您可以使用:+将元素追加到数组, +:作为前缀:

 0 +: array :+ 4 

应该产生:

 res3: Array[Int] = Array(0, 1, 2, 3, 4) 

这和其他Scala系列一样。

 val array2 = array :+ 4 //Array(1, 2, 3, 4) 

作品也“倒转”:

 val array2 = 4 +: array Array(4, 1, 2, 3) 

还有一个“就地”版本:

 var array = Array( 1, 2, 3 ) array +:= 4 //Array(4, 1, 2, 3) array :+= 0 //Array(4, 1, 2, 3, 0) 

最简单的可能是:

 Array(1, 2, 3) :+ 4 

实际上,Array可以在一个WrappedArray被隐式转换