Java で配列をシフトする
-
Java で
for
ループとtemp
変数を使用して配列をシフトする -
Java 8 で
skip()
メソッドを使用して配列をシフトする -
Java で
Collections.rotate(List<type> list, int distance)
を使用して配列をシフトする
この記事では、Java で配列の要素をシフトする方法について説明します。
Java で for
ループと temp
変数を使用して配列をシフトする
このコードには、int
型変数のコレクションである array
変数があります。ここでは、変数 n
で指定されたインデックス 2 の要素をプルしようとしていますが、配列のインデックス 0 に移動します。
この目的を達成するために、配列とインデックスを for
ループで構成されるメソッド ShiftToRight
に渡します。要素をインデックス n
の temp
変数に格納します。
temp = a[n];
i.e.temp = [ 2 ] i.e.temp = a[2] i.e.temp = 3;
最初の反復:
for (i = 2; i > 0; i--) i.e.for (i = 2; 2 > 0; i--)
a[i] = a[i - 1];
i.e.a[2] = a[2 - 1] i.e.a[2] = a[1] i.e.a[2] = 2
2 回目の反復:
for (i = 1; 1 > 0; i--) ```
```java
a[i] = a[i - 1];
i.e.a[1] = a[1 - 1] i.e.a[1] = a[0] i.e.a[1] = 1
i(0)
は 0 以下であるため、for
ループから抜け出します。
a[0] = temp i.e.a[0] = 3
渡されたインデックス値の後に続く配列の要素は変更されません。この場合、最後の 2つの要素は、シフト後も元のインデックスのままです。
import java.util.Arrays;
public class ShiftTest {
public static void main(String args[]) {
int[] array = {1, 2, 3, 4, 5};
int n = 2;
System.out.println("Array " + Arrays.toString(array));
ShiftToRight(array, n);
}
public static void ShiftToRight(int a[], int n) {
int temp = a[n];
for (int i = n; i > 0; i--) {
a[i] = a[i - 1];
}
a[0] = temp;
System.out.println("Array after shifting to right by one : " + Arrays.toString(a));
}
}
出力:
Array [1, 2, 3, 4, 5]
Array after shifting to right by one : [3, 1, 2, 4, 5]
Java 8 で skip()
メソッドを使用して配列をシフトする
Java 8 の skip()
メソッドは、ストリーム内の n
個の要素を破棄し、残りの要素で構成されるストリームを返します。ストリームに含まれる要素が n
未満の場合、空のストリームが返されます。
Arrays.stream()
メソッドを使用して array
をストリームに変換し、skip()
メソッドを呼び出して 1 を渡します。配列の最初の要素をスキップします。後でラムダ
形式を使用して、返されたストリームの各要素を出力します。
import java.util.Arrays;
public class TestArray {
public static void main(String[] args) {
int[] array = {1, 2, 3, 4, 5, 6, 7};
Arrays.stream(array).skip(1).forEach(System.out::println);
}
}
出力:
ShiftedArray: [2, 3, 4, 5, 6, 7]
Java で Collections.rotate(List<type> list, int distance)
を使用して配列をシフトする
配列を 1つシフトするには、このメソッドを使用して、コレクション
のリストで指定された要素を指定された距離だけ回転させます。Arrays.asList()
を使用して、配列をリストに変換します。リストはインデックス 2 でローテーションされます。
リストの各要素を指定された距離だけ移動し、インデックスが指定された長さを超える要素をリストの先頭に移動します。
import java.util.Arrays;
import java.util.Collections import java.util.List;
public class Test11 {
public static void main(String args[]) {
String[] strArray = {"One", "Two", "Three", "Four", "Five"};
System.out.println("Original List : " + Arrays.toString(strArray));
List<String> list = Arrays.asList(strArray);
Collections.rotate(list, 2);
System.out.println("Rotated List: " + list);
}
}
出力:
Original List : [One, Two, Three, Four, Five]
Rotated List: [Four, Five, One, Two, Three]
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn