Наилучшая практика для циклического сдвига последовательности

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

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.

ОБНОВЛЕНИЕ:

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

18
задан Niklas 30 September 2013 в 13:32
поделиться