如何移动数组的内容?

时间:2013-03-09 17:07:45

标签: java arrays

例如,我有一个包含以下内容的数组: a,b,c,d,e,f

我希望结果如下: b,c,d,e,f,a

我该怎么做?

4 个答案:

答案 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]
}

复制数组是另一种解决方案,但如果您经常轮换数组,我建议不要更改内容或创建新数组,通过定义开始索引,您可以随时更改起始点。