Вращение массива или коллекции в Java - PullRequest
0 голосов
/ 15 апреля 2020

есть встроенная функция для вращения коллекции / массива в Java

Collections.rotate(list,distance).

class test1 {
    public static void main(String[] args) {

        int[] a = { 1, 2, 3, 4, 5, 6 };

        List<Integer> list = Arrays.stream(a).boxed().collect(Collectors.toList());

        Collections.rotate(list, 3);
        System.out.println(list);//[4, 5, 6, 1, 2, 3]

    }// main
}

Функция выше вращает массив в правильном направлении. Есть ли способ напечатать массив в левом направлении, я имею в виду, левый поворот с использованием только этой функции. (Я знаю, что мы можем повернуть его вручную, я просто хочу знать, возможно ли это так или иначе)?

Ответы [ 2 ]

1 голос
/ 15 апреля 2020

Из документации:

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

Предположительно, отрицательное значение будет делать то, что вы хотите.

Вы можете проверить по формуле, описанной в docs:

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

Таким образом, если вы передадите -3 в качестве расстояния, то вы получите "элемент в i будет элементом ранее в i + 3", что эффективно поворачивает список влево.

1 голос
/ 15 апреля 2020

Для поворота вправо n используйте элементы.

  Collections.rotate(list, n);

Для поворота влево используйте

  Collections.rotate(list, -n);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...