Java の配列範囲

Lovey Arora 2023年10月12日
  1. 別の配列を使用して、Java の配列から要素の範囲を取得する
  2. copyOfRange() メソッドを使用して、Java の配列から要素の範囲を取得する
  3. stream オブジェクトを使用して、Java の配列から要素の範囲を取得する
Java の配列範囲

配列スライシングは、既存の配列から要素の範囲を取得するために行われます。これは、特定の配列からサブ配列を抽出するようなものです。

このチュートリアルでは、既存の配列からさまざまな要素を取得する方法を示します。

別の配列を使用して、Java の配列から要素の範囲を取得する

このメソッドでは、必要な要素を新しい配列にコピーします。まず、指定された範囲に基づいて配列の開始インデックスと終了インデックスを見つける必要があります。次に、サイズの空の配列を作成する必要があります(endIndex-startIndex)。最後に、指定された配列からスライスされた配列に要素をコピーして出力します。

以下のコードを参照してください。

import java.util.Arrays;

public class Main {
  public static int[] getSlice(int[] array, int startIndex, int endIndex) {
    int[] slicedArray = new int[endIndex - startIndex];
    for (int i = 0; i < slicedArray.length; i++) {
      slicedArray[i] = array[startIndex + i];
    }
    return slicedArray;
  }
  public static void main(String args[]) {
    int[] array = {87, 56, 29, 11, 45, 33, 84, 4, 67, 73};
    int startIndex = 4, endIndex = 9;
    int[] slicedArray = getSlice(array, startIndex, endIndex + 1);
    System.out.println("Slice of Array: " + Arrays.toString(slicedArray));
  }
}

出力:

Slice of Array: [45, 33, 84, 4, 67, 73]

小さいサイズの配列のみを処理する場合は、この方法を使用することをお勧めします。配列を反復処理して別の配列にコピーするには、多くのメモリと時間が必要です。

copyOfRange() メソッドを使用して、Java の配列から要素の範囲を取得する

このメソッドは、java.util.Arrays クラスで定義されています。このメソッドは、特定の範囲の要素を指定された元の配列から新しい配列にコピーしてから、この配列を返します。

例えば、

import java.util.Arrays;
public class Main {
  public static int[] slice(int[] array, int startIndex, int endIndex) {
    int[] slicedArray = Arrays.copyOfRange(array, startIndex, endIndex);
    return slicedArray;
  }
  public static void main(String args[]) {
    int[] array = {87, 56, 29, 11, 45, 33, 84, 4, 67, 73};
    int startIndex = 4, endIndex = 9;
    int[] sliceArray = slice(array, startIndex, endIndex + 1);
    System.out.println("Slice of Array: " + Arrays.toString(sliceArray));
  }
}

出力:

Slice of Array: [45, 33, 84, 4, 67, 73]

stream オブジェクトを使用して、Java の配列から要素の範囲を取得する

このメソッドで範囲の startIndexendIndex を見つけることから始めます。次に、range() メソッドを使用して、必要な範囲の要素をプリミティブストリームに変換する必要があります。次に、map() メソッドを使用して、元の配列から範囲に必要な要素をマップします。最後に、toArray() メソッドはマップされた配列を配列に変換し、それを出力します。

以下のコードを参照してください。

import java.util.Arrays;
import java.util.stream.IntStream;
public class Main {
  public static int[] findSlice(int[] array, int startIndex, int endIndex) {
    int[] slcarray = IntStream.range(startIndex, endIndex).map(i -> array[i]).toArray();
    return slcarray;
  }
  public static void main(String args[]) {
    int[] array = {87, 56, 29, 11, 45, 33, 84, 4, 67, 73};
    int startIndex = 4, endIndex = 9;
    int[] slcarray = findSlice(array, startIndex, endIndex + 1);
    System.out.println("Slice of array for the specified range is: " + Arrays.toString(slcarray));
  }
}

出力:

Slice of Array: [45, 33, 84, 4, 67, 73]

関連記事 - Java Array