17370845950

Java Collections.rotate如何旋转集合
Collections.rotate()用于旋转列表元素,正数距离向右移动,负数向左。例如list=["a","b","c","d","e"],rotate(list,2)结果为["d","e","a","b","c"],rotate(list,-2)结果为["c","d","e","a","b"]。

Java 中的 Collections.rotate() 方法用于将集合中的元素向右或向左“旋转”指定的距离。这个操作不会改变集合的大小,只是重新排列元素的位置。

基本用法

Collections.rotate(List list, int distance) 接受两个参数:

  • list:要旋转的列表(必须是可修改的 List)
  • distance:旋转的距离

如果 distance 为正数,元素向移动(末尾元素移到前面);
如果 distance 为负数,元素向移动(前面元素移到后面)。

旋转示例

假设有一个列表:

List list = Arrays.asList("a", "b", "c", "d", "e");

执行 Collections.rotate(list, 2) 后,结果为:

["d", "e", "a", "b", "c"]

解释:最后两个元素 "d" 和 "e" 被移到了前面。

若执行 Collections.rotate(list, -2),结果为:

["c", "d", "e", "a", "b"]

解释:前两个元素 "a" 和 "b" 被移到了末尾。

注意事项

  • 该方法只适用于 List 接口的实现类(如 ArrayList、LinkedList),不适用于 Set 或其他集合类型。
  • 传入的 List 必须支持随机访问和修改,否则可能抛出异常。
  • 如果列表为空或只有一个元素,旋转无效果。
  • 实际旋转距离会自动对列表大小取模,避免重复旋转。例如,rotate(list, 7) 在长度为 5 的列表中等价于 rotate(list, 2)。

基本上就这些。使用 rotate 方法可以方便地调整元素顺序,适合轮播、队列调度等场景。操作简单但容易忽略负数距离的左移效果,注意理解方向逻辑。