Java で配列をシフトする

Rupam Yadav 2023年1月30日 2021年7月3日
  1. Java で for ループと temp 変数を使用して配列をシフトする
  2. Java 8 で skip() メソッドを使用して配列をシフトする
  3. Java で Collections.rotate(List<type> list, int distance) を使用して配列をシフトする
Java で配列をシフトする

この記事では、Java で配列の要素をシフトする方法について説明します。

Java で for ループと temp 変数を使用して配列をシフトする

このコードには、int 型変数のコレクションである array 変数があります。ここでは、変数 n で指定されたインデックス 2 の要素をプルしようとしていますが、配列のインデックス 0 に移動します。

この目的を達成するために、配列とインデックスを for ループで構成されるメソッド ShiftToRight に渡します。要素をインデックス ntemp 変数に格納します。

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--)
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]
Author: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

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

関連記事 - Java Array