Collections.Rotate(IList<Object>, Int32) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
將指定列表中的元素旋轉至指定距離。
[Android.Runtime.Register("rotate", "(Ljava/util/List;I)V", "")]
public static void Rotate(System.Collections.Generic.IList<object> list, int distance);
[<Android.Runtime.Register("rotate", "(Ljava/util/List;I)V", "")>]
static member Rotate : System.Collections.Generic.IList<obj> * int -> unit
參數
- distance
- Int32
旋轉清單的距離。 此值沒有限制;它可以是零、負值,或大於 list.size()。
- 屬性
備註
將指定列表中的元素旋轉至指定距離。 呼叫此方法後,索引的i元素將是先前在 mod list.size()索引時的(i - distance)元素,適用於所有介於 0 和 list.size()-1之間的值i。 (此方法不影響列表大小。)
例如,假設 list 包含[t, a, n, k, s]。 在呼叫 Collections.rotate(list, 1) (或 Collections.rotate(list, -4))後, list 將包含 [s, t, a, n, k]。
請注意,此方法可實用地應用於子清單,在保留剩餘元素的順序的同時,移動列表中的一個或多個元素。 例如,以下慣用語將索引j元素向前移動到位置(該位置k必須大於或等於):j
Collections.rotate(list.subList(j, k+1), -1);
為了具體說明,假設 list 包含 [a, b, c, d, e]。 要將位於索引 1 (b)的元素向前移動兩個位置,請執行以下調用:
Collections.rotate(l.subList(1, 4), -1);
所得列表為 [a, c, d, b, e]。
要向前移動多個元素,請增加旋轉距離的絕對值。 要將元素往後移動,請使用正移移距離。
若指定的清單較小或實 RandomAccess 作介面,此實作會將第一個元素交換到應該放置的位置,然後反覆將被移位的元素交換到該位置,直到有位移元素被替換到第一個元素。 如有需要,會重複第二個及後續元素,直到旋轉完成。 若指定的清單很大且未實作介面, RandomAccess 此實作會將清單拆分為兩個子清單視圖,圍繞索引 -distance mod size。 接著在每個子清單視圖中呼叫該 #reverse(List) 方法,最後在整個清單中呼叫。 欲了解這兩種演算法的完整描述,請參閱 Jon Bentley 的 《程式設計珍珠 》(Addison-Wesley, 1986)第 2.3 節。
在 1.4 版本加入。
的 java.util.Collections.rotate(java.util.List<?>, int)Java 檔。
此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。