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 の要素は、 と list.size()-1の間0のすべての値iに対して、以前に index (i - distance) mod list.size()の 要素になります。 (このメソッドは、リストのサイズには影響しません。

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

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

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

この具象を作成するには、 が で構成されていると[a, b, c, d, e]しますlist。 インデックス 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 の プログラミング パール のセクション 2.3 (Addison-Wesley、1986) を参照してください。

1.4 で追加されました。

java.util.Collections.rotate(java.util.List<?>, int)Java ドキュメント。

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

適用対象