Java学习,List移动元素
Java实现List中元素的循环移动(即将列表中的元素向右或向左移动指定数量的位置),可以使用多种方法。
List元素移动指定位置:
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class RotateList {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
// 初始化列表
Collections.addAll(list, 1, 2, 3, 4, 5, 6, 7);
System.out.println("原始列表: " + list);
// 循环移动位置(向右移动3个位置)
int rotateCount = 3;
List<Integer> rotatedList = rotateRight(list, rotateCount);
System.out.println("向右移动" + rotateCount + "个位置后的列表: " + rotatedList);
}
/**
* 将列表元素向右循环移动指定的位置
*
* @param list 原始列表
* @param rotateCount 要移动的位置数
* @return 移动后的新列表
*/
public static List<Integer> rotateRight(List<Integer> list, int rotateCount) {
if (list == null || list.isEmpty() || rotateCount == 0) {
return new ArrayList<>(list);
}
int size = list.size();
rotateCount = rotateCount % size; // 防止移动超过列表长度
List<Integer> rotatedList = new ArrayList<>(size);
// 将后部分元素移到新列表的前面
for (int i = size - rotateCount; i < size; i++) {
rotatedList.add(list.get(i));
}
// 将前部分元素移到新列表的后面
for (int i = 0; i < size - rotateCount; i++) {
rotatedList.add(list.get(i));
}
return rotatedList;
}
}
Collections的rotate() 循环移动元素:
import java.util.*;
public class Main {
public static void main(String[] args) {
List list = Arrays.asList("one Two three Four five six".split(" "));
System.out.println("List :"+list);
Collections.rotate(list, 3);
System.out.println("rotate: " + list);
}
}