言語

Collections.Rotate(IList<Object>, Int32) メソッド

定義

指定したリスト内の要素を指定した距離で回転します。

[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

パラメーター

list
IList<Object>

回転するリスト。

distance
Int32

リストを回転する距離を指定します。 この値には制約はありません。0、負、または list.size()より大きい場合があります。

属性

注釈

指定したリスト内の要素を指定した距離で回転します。 このメソッドを呼び出した後、index i の要素は、0list.size()-1の間のすべての値について、以前はインデックス i(i - distance) mod list.size()にある要素になります。 (このメソッドは、リストのサイズには影響しません)。

たとえば、 list が構成[t, a, n, k, s]とします。 Collections.rotate(list, 1) (またはCollections.rotate(list, -4)) を呼び出した後、list[s, t, a, n, k]で構成されます。

このメソッドは、残りの要素の順序を維持しながら、リスト内の 1 つ以上の要素を移動するサブリストに便利に適用できることに注意してください。 たとえば、次のイディオムは、インデックス j 位置 k ( j 以上である必要があります) に要素を移動します。

Collections.rotate(list.subList(j, k+1), -1);

これを具体的にするには、 list[a, b, c, d, e]で構成されているとします。 インデックス 1 (b) にある要素を 2 つの位置に移動するには、次の呼び出しを実行します。

Collections.rotate(l.subList(1, 4), -1);

結果の一覧が [a, c, d, b, e]されます。

複数の要素を前方に移動するには、回転距離の絶対値を大きくします。 要素を後方に移動するには、正のシフト距離を使用します。

指定したリストが小さいか、 RandomAccess インターフェイスを実装している場合、この実装は最初の要素を移動する必要がある場所に交換し、変位した要素が最初の要素にスワップされるまで移動する必要がある場所に繰り返し交換します。 必要に応じて、回転が完了するまで、2 番目の要素と連続する要素でプロセスが繰り返されます。 指定したリストが大きく、 RandomAccess インターフェイスを実装していない場合、この実装では、インデックス -distance mod sizeに関する 2 つのサブリスト ビューにリストが分割されます。 その後、各サブリスト ビューで #reverse(List) メソッドが呼び出され、最後にリスト全体で呼び出されます。 両方のアルゴリズムの詳細については、Jon Bentleyの プログラミングパール (Addison-Wesley、1986)のセクション2.3を参照してください。

1.4 で追加されました。

Javaドキュメント。

このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。

適用対象