例如,我有一个包含以下内容的数组: a,b,c,d,e,f
我希望结果如下: b,c,d,e,f,a
我该怎么做?
答案 0 :(得分:4)
使用arraycopy:
var t = arr[0];
System.arraycopy(arr, 1, arr, 0, arr.length-1);
arr[arr.length-1] = t;
javadoc指定此操作是安全的:
如果src和dest参数引用相同的数组对象,那么 执行复制就好像位于srcPos的位置处的组件一样 首先将srcPos + length-1复制到具有length的临时数组 组件然后复制临时数组的内容 到目的地的destPos + length-1的destPos位置 阵列。
答案 1 :(得分:2)
Collections.rotate(Arrays.asList(array), -1);
答案 2 :(得分:0)
尝试使用ArrayList,它有一些很好的方法可以自动切换。试试
myArrayList.add(0,myArrayList.remove(myArrayList.size()-1))
答案 3 :(得分:0)
LinkedList可以快速完成此操作,但在大多数情况下您不需要这样做。相反,在不修改数组内容的情况下,定义起始索引要容易得多。
例如,
int start = 5;
for (int i=start, j=0; j<arr.length; i++, j++) {
if (i == arr.length) {
i = 0;
}
// do something with arr[i]
}
复制数组是另一种解决方案,但如果您经常轮换数组,我建议不要更改内容或创建新数组,通过定义开始索引,您可以随时更改起始点。