Scala:如何将List的一部分复制到另一个List

时间:2016-06-23 17:23:46

标签: scala

我是Scala的新手。

我有一份清单   origList = List [Double]包含数千个元素。 我需要创建另一个列表   outList =列表[双] 并从origList复制带索引的元素   开始,开始+ 1,...,开始+ nCopy-1 那就是输出列表将有nCopy元素。

这部分代码将被执行多次。在Scala中最有效的方法是什么?

1 个答案:

答案 0 :(得分:3)

人们通常在scala中执行此操作的方式是list.slice(start, start+nCopy)

注意,scala中的List ArrayList这样的随机访问容器在java中。它是作为一个链表实现的,所以,特别是,如果你打算多次这样做,如果你把你的列表转换成手前索引的东西,它会有很大的帮助:val converted = list.toIndexedSeq或者更好,{{1 }}。

val converted = list.toArray.slice上的

Array效率会更高,尤其是IndexedSeq索引较高时。

现在,如果你真的关注效率,那么这一项操作,没有(不幸的是)胜过古老的Java方法:

start

当复制足够多(数百)个元素时,这可以数量级val converted = list.toArray val copied = java.util.Arrays.copyOfRange(converted, start, start+nCopy) (单独留下converted.slice)快。