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
Параметры
- 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.