2013-03-09 70 views

回答

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位置的組件首先被複制到長度爲 com的臨時陣列然後將臨時陣列的內容複製到目標 陣列的destPos + length-1的位置destPos中。

0

嘗試使用ArrayList,它有一些不錯的方法自動轉換。嘗試

myArrayList.add(0,myArrayList.remove(myArrayList.size()-1)) 
+0

儘管'ArrayList'很方便,這並不能回答你如何在數組中做這件事的問題。 – 2013-03-09 17:11:27

2
Collections.rotate(Arrays.asList(array), -1); 
+0

@dystroy:我不會以數組結束;這個操作會在原地修改'array'。 – 2013-03-09 17:16:28

+1

它真的有用嗎? http://ideone.com/qmAItu – 2013-03-09 17:28:26

+0

不與'int []',但OP的數組似乎是'String's。它可以用任何Object []來工作。 – 2013-03-09 17:53:18

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

複製陣列是另一種解決方案,但如果您經常旋轉陣列,我建議不要改動的內容或創建新陣列,通過定義開始索引,你可以改變只要你想要的起點。