Collections.rotate()用于循环移动List元素,正数distance向右旋转,负数向左,如[1,2,3,4,5]rotate(2)得[4,5,1,2,3],该方法直接修改原列表,支持自动取模,仅适用于List实现类。

在Java中,Collections.rotate() 是一个非常实用的方法,用于将集合中的元素进行循环移动。它能让你把集合的元素整体向右或向左“旋转”指定的位数,而无需手动编写复杂的交换逻辑。
理解 Collections.rotate() 的基本用法
rotate 方法定义在 java.util.Collections 类中,其方法签名如下:
public static void rotate(List> list, int distance)它接受两个参数:
- list:要旋转的 List 集合(注意必须是 List,Set 或其他集合类型不支持)
- distance:旋转的距离
正数表示向右旋转,负数表示向左旋转。
立即学习“Java免费学习笔记(深入)”;
例如,有一个列表 [1, 2, 3, 4, 5]:
- rotate(list, 1) → [5, 1, 2, 3, 4]
- rotate(list, -1) → [2, 3, 4, 5, 1]
- rotate(list, 2) → [4, 5, 1, 2, 3]
实际代码示例
下面是一个简单的使用示例:
ListSystem.out.println("原列表: " + numbers);
Collections.rotate(numbers, 2);
System.out.println("向右旋转2位: " + numbers);
Collections.rotate(numbers, -3);
System.out.println("再向左旋转3位: " + numbers);
输出结果为:
原列表: [1, 2, 3, 4, 5]向右旋转2位: [4, 5, 1, 2, 3]
再向左旋转3位: [2, 3, 4, 5, 1]
注意事项与使用技巧
使用 rotate 方法时需要注意以下几点:
- 只能作用于 List 实现类(如 ArrayList、LinkedList),不能用于 Set、Queue 等
- 空集合或只有一个元素的集合旋转后不会变化
- distance 可以大于集合大小,rotate 方法内部会自动取模处理,比如对长度为5的列表 rotate(7),等效于 rotate(2)
- 该方法直接修改原列表,不会返回新集合
如果想实现数组的旋转,可以先将数组转为 List,例如:
int[] arr = {10, 20, 30, 40};List
Collections.rotate(list, 1);
// 再转回数组(如有需要)










