如何在Scala中移动序列中的元素

时间:2017-01-04 23:32:51

标签: scala collections

如果班次的大小是参数。

  def shiftN[A](s: Seq[A], nb: Int) : A => A =
    a => s((s.indexOf(a) + nb)%s.length)

但是如果移位的大小总是相同(例如1)并且函数将被多次调用,我们可以做一个优化。 (因此,关于直接访问结果的增益,构建地图的开销很小。)

  def shift1[A](s: Seq[A]) : A => A = {
    val shifted = s.tail :+ s.head
    val m = s.zip(shifted).toMap
    a => m(a)
  }

有更好的方法吗?

0 个答案:

没有答案