Java 中的旋转列表

17 Mar 2025 | 6 分钟阅读

列表是元素的有序集合,可以存储重复值。列表按照我们插入元素的相同顺序存储元素,因此它保持元素的插入顺序,并允许我们根据位置访问和插入元素。

在本节中,我们将了解如何在 Java 中旋转列表的元素。假设我们有以下要旋转的列表

1 -> 2-> 3-> 4-> 5 -> 6 -> 7

我们可以通过两种方式执行旋转:右旋左旋。执行 4 次右旋后,列表中的元素顺序如下

4 -> 5-> 6-> 7-> 1 -> 2 -> 3

右旋

我们可以使用或不使用内置方法实现右旋。让我们逐一了解这两种方法

不使用内置方法进行右旋

右旋通过将元素向列表的右侧移动来完成。我们使用以下步骤在列表中执行右旋

  1. 第一步,我们将创建一个变量 temp 并将列表的最后一个元素存储在其中。
  2. 接下来,我们将元素向右移动一个位置。
  3. 现在,我们将列表中第一个索引处的值替换为 temp 中的值
  4. 现在,更新列表的最后一个元素将存储在 temp 变量中。
  5. 我们将重复上述步骤所需的旋转次数。

让我们实现上述理论的代码,不使用内置方法执行右旋

RightRotationExample1.java

输出

Rotate List in Java

使用内置方法进行右旋

我们使用 Collections 类rotate() 方法在列表中执行右旋。该方法接受两个参数,即列表和一个正整数。

列表参数定义了我们需要执行旋转的列表。距离参数是一个正整数,定义了旋转的次数。

让我们举一个例子来理解如何使用内置方法执行右旋。

RightRotationExample2.java

输出

Rotate List in Java

列表的左旋

我们可以在 Java 程序中使用/不使用内置方法实现旋转。让我们逐一了解这两种方法

不使用内置方法进行左旋

左旋通过将元素向列表的左侧移动来完成。我们使用以下步骤在列表中执行右旋

  1. 第一步,我们将创建一个变量 temp 并将列表的第一个元素存储在其中。
  2. 接下来,我们将元素向左移动一个位置。
  3. 现在,我们将列表中最后一个索引处的值替换为 temp 中的值
  4. 现在,更新列表的第一个元素将存储在 temp 变量中。
  5. 我们将重复上述步骤所需的旋转次数。

让我们实现上述理论的代码,不使用内置方法执行左旋

LeftRotationExample1.java

输出

Rotate List in Java

使用内置方法进行左旋

就像右旋一样,我们也使用 Collections 类的 rotate() 方法执行左旋。右旋和左旋之间唯一的区别是,在右旋中,距离参数的值是正数,而在左旋中,其值是负数。

让我们举一个例子来理解如何使用内置方法执行左旋。

LeftRotationExample2.java

输出

Rotate List in Java