Лучшая практика для смещения последовательности по кругу

Я должен реализовать своего рода массив, последовательность или список, который поддерживает самый дешевый способ пересылки и обратной обмотки элементов. Смотрите этот пример:

Original sequence: 1 2 3 4 5

Forwarded once: 5 1 2 3 4
Forwarded twice: 4 5 1 2 3

То же самое, но противоположное для обратной обмотки. Какой самый дешевый и самый Scala-стиль способ реализации этого? В Java я мог бы использовать LinkedList, и это было бы здорово ... Однако я не мог найти какой-либо определенный ответ для Scala.

Кроме того, любой элемент должен быть легко заменен индексом, как в LinkedList.

ОБНОВИТЬ:

Для самого быстрого, но не очень идиоматического варианта алгоритма (вы знаете, когда он вам нужен), обратитесь к ответу Петра Пудлака !!!

Ответы на вопрос(11)

Ваш ответ на вопрос