La façon dont les gens le font habituellement en scala est la suivante list.slice(start, start+nCopy)
.
Notez, que List
en scala est no un conteneur à accès aléatoire comme ArrayList
est en java. Il est implémenté comme une liste chaînée, donc, en particulier, si vous allez le faire plusieurs fois, cela vous aidera de manière significative, si vous convertissez votre liste en quelque chose d'indexé à l'avance : val converted = list.toIndexedSeq
ou, mieux, val converted = list.toArray
.
.slice
sur un Array
ou sur IndexedSeq
sera beaucoup plus efficace, surtout si start
est élevé.
Maintenant, si vous êtes vraiment Pour ce qui est de l'efficacité de cette opération, rien ne vaut (malheureusement) la bonne vieille approche java :
val converted = list.toArray
val copied = java.util.Arrays.copyOfRange(converted, start, start+nCopy)
Cela peut être ordres de grandeur plus vite que converted.slice
(laisser seul list.slice
) lors de la copie d'un nombre suffisamment grand (centaines) d'éléments.