Collections.Rotate(IList<Object>, Int32) Метод

Определение

Поворачивает элементы в указанном списке на указанное расстояние.

[Android.Runtime.Register("rotate", "(Ljava/util/List;I)V", "")]
public static void Rotate (System.Collections.Generic.IList<object> list, int distance);
[<Android.Runtime.Register("rotate", "(Ljava/util/List;I)V", "")>]
static member Rotate : System.Collections.Generic.IList<obj> * int -> unit

Параметры

list
IList<Object>

список для поворота.

distance
Int32

расстояние для поворота списка. Для этого значения нет ограничений; Значение может быть равно нулю, отрицательному значению или больше list.size().

Атрибуты

Комментарии

Поворачивает элементы в указанном списке на указанное расстояние. После вызова этого метода элемент с индексом i будет элементом, ранее приведенным в index (i - distance) mod list.size(), для всех значений i между 0 и list.size()-1, включительно. (Этот метод не влияет на размер списка.)

Например, предположим, что list содержит[t, a, n, k, s]. После вызова Collections.rotate(list, 1) (или Collections.rotate(list, -4)) list будет содержать [s, t, a, n, k].

Обратите внимание, что этот метод можно применить к подлистам для перемещения одного или нескольких элементов в списке с сохранением порядка остальных элементов. Например, следующая идиома перемещает элемент по индексу j вперед в позицию k (которая должна быть больше или равна j):

Collections.rotate(list.subList(j, k+1), -1);

Чтобы сделать это конкретным, предположим list , что содержит [a, b, c, d, e]. Чтобы переместить элемент по индексу 1 (b) вперед на две позиции, выполните следующий вызов:

Collections.rotate(l.subList(1, 4), -1);

Результатом является список [a, c, d, b, e].

Чтобы переместить несколько элементов вперед, увеличьте абсолютное значение расстояния поворота. Чтобы переместить элементы назад, используйте положительное расстояние сдвига.

Если указанный список имеет небольшой размер или реализует RandomAccess интерфейс , эта реализация перемещает первый элемент в расположение, куда он должен перейти, а затем повторно меняет перемещенный элемент в расположении, куда он должен перейти, пока перемещенный элемент не будет перемещен на первый элемент. При необходимости процесс повторяется во втором и последующих элементах, пока не завершится поворот. Если указанный список имеет большой размер и не реализует RandomAccess интерфейс , эта реализация разбивает список на два представления подсписок вокруг индекса -distance mod size. #reverse(List) Затем метод вызывается в каждом представлении подлиста и, наконец, он вызывается для всего списка. Более полное описание обоих алгоритмов см. в разделе 2.3 статьи Jon Bentley's Programming Pearls (Addison-Wesley, 1986).

Добавлено в версии 1.4.

Документация по Java для java.util.Collections.rotate(java.util.List<?>, int).

Части этой страницы являются изменениями, основанными на работе, созданной и совместно используемой проектом и используемой в соответствии с условиями, Creative Commons 2.5 Attribution License Creative Commons 2.5 Attribution License.

Применяется к