Java で配列のサブセットを取得する

Sheeraz Gul 2023年10月12日
  1. Arrays.copyOf() メソッドを使用して配列のサブセットを取得する
  2. Arrays.copyOfRange() メソッドを使用して配列のサブセットを取得する
  3. Java 8 の Stream.IntStream メソッドを使用して配列のサブセットを取得する
  4. System.arraycopy() メソッドを使用して配列のサブセットを取得する
  5. Apache Commons Lang を使用して配列のサブセットを取得する
  6. リスト変換を使用して配列のサブセットを取得する
  7. カスタム メソッドを使用して配列のサブセットを取得する
Java で配列のサブセットを取得する

このチュートリアルでは、Java で配列のサブセットを取得するいくつかの方法を示します。

Arrays.copyOf() メソッドを使用して配列のサブセットを取得する

Arrays.copyOf() は Java Util の組み込みメソッドで、指定された配列を指定された型の別の配列にコピーします。 このメソッドは配列のサブセットを取得できますが、部分配列が最初のインデックス以外のインデックスで始まる場合は機能しません。

例:

package delftstack;

import java.util.Arrays;

public class Array_Subset {
  public static void main(String[] args) {
    String[] demo_array = new String[] {"Delftstack1", "Delftstack2", "Delftstack3", "Delftstack4",
        "Delftstack5", "Delftstack6", "Delftstack7"};
    int End_Index = 5;

    String[] Subset = Arrays.copyOf(demo_array, End_Index, String[].class);
    System.out.println(Arrays.toString(Subset));
  }
}

上記のコードは、指定された配列のサブセットを開始インデックスから指定された End_index にコピーします。

出力:

[Delftstack1, Delftstack2, Delftstack3, Delftstack4, Delftstack5]

Arrays.copyOfRange() メソッドを使用して配列のサブセットを取得する

Arrays.copyOfRange() メソッドは、指定された開始インデックスと終了インデックスを持つ配列からサブセットをコピーするために使用されます。 サブセットを別の配列にコピーします。

例:

package delftstack;

import java.util.Arrays;

public class Array_Subset {
  public static <Demo> Demo[] Array_Subset(Demo[] Array, int Begin_Index, int End_Index) {
    return Arrays.copyOfRange(Array, Begin_Index, End_Index);
  }

  public static void main(String[] args) {
    String[] Demo_Array = {"Delftstack1", "Delftstack2", "Delftstack3", "Delftstack4",
        "Delftstack5", "Delftstack6", "Delftstack7"};
    int Begin_Index = 2;
    int End_Index = 7;

    String[] Subset = Array_Subset(Demo_Array, Begin_Index, End_Index);
    System.out.println(Arrays.toString(Subset));
  }
}

出力:

[Delftstack3, Delftstack4, Delftstack5, Delftstack6, Delftstack7]

Java 8 の Stream.IntStream メソッドを使用して配列のサブセットを取得する

Java Stream を使用して、配列のサブセットを取得することもできます。 指定された範囲の間の要素のストリームを取得し、配列に入れます。

例:

package delftstack;

import java.util.Arrays;
import java.util.stream.IntStream;

public class Array_Subset {
  public static void main(String[] args) {
    String[] Demo_Arrary = {"Delftstack1", "Delftstack2", "Delftstack3", "Delftstack4",
        "Delftstack5", "Delftstack6", "Delftstack7"};
    int Begin_Index = 2;
    int End_Index = 7;

    String[] Subset = IntStream.range(Begin_Index, End_Index)
                          .mapToObj(x -> Demo_Arrary[x])
                          .toArray(String[] ::new);

    System.out.println(Arrays.toString(Subset));
  }
}

出力:

[Delftstack3, Delftstack4, Delftstack5, Delftstack6, Delftstack7]

System.arraycopy() メソッドを使用して配列のサブセットを取得する

System.arraycopy() メソッドは、指定された開始インデックスと終了インデックスを持つ配列からサブセットをコピーできます。 サブセットを別の配列にコピーします。

例:

package delftstack;

import java.util.Arrays;

public class Array_Subset {
  public static void main(String[] args) {
    String[] Demo_Array = new String[] {"Delftstack1", "Delftstack2", "Delftstack3", "Delftstack4",
        "Delftstack5", "Delftstack6", "Delftstack7"};
    int Begin_Index = 2;
    int End_Index = 7;

    String[] Subset = new String[End_Index - Begin_Index];
    System.arraycopy(Demo_Array, Begin_Index, Subset, 0, Subset.length);

    System.out.println(Arrays.toString(Subset));
  }
}

System.arraycopy() は Arrays.copyOfRange() と同様に機能します。 指定された範囲内の配列のサブセットをコピーします。

出力:

[Delftstack3, Delftstack4, Delftstack5, Delftstack6, Delftstack7]

Apache Commons Lang を使用して配列のサブセットを取得する

ArrayUtils クラスは、subarray() メソッドを使用して配列のサブセットを取得する機能を提供します。 このメソッドは、指定された範囲の要素を持つオブジェクトを返します。

例:

package delftstack;

import java.util.Arrays;
import org.apache.commons.lang3.ArrayUtils;

public class Array_Subset {
  public static void main(String[] args) {
    String[] Demo_Array = new String[] {"Delftstack1", "Delftstack2", "Delftstack3", "Delftstack4",
        "Delftstack5", "Delftstack6", "Delftstack7"};
    int Begin_Index = 2;
    int End_Index = 7;

    Object[] Subset = ArrayUtils.subarray(Demo_Array, Begin_Index, End_Index);
    System.out.println(Arrays.toString(Subset));
  }
}

出力:

[Delftstack3, Delftstack4, Delftstack5, Delftstack6, Delftstack7]

リスト変換を使用して配列のサブセットを取得する

このメソッドは、配列をリストに変換し、subList() メソッドを使用して、指定された範囲内の配列のサブセットを取得し、それを別の配列にコピーします。

例:

package delftstack;

import java.util.Arrays;

public class Array_Subset {
  public static void main(String[] args) {
    String[] Demo_Array = new String[] {"Delftstack1", "Delftstack2", "Delftstack3", "Delftstack4",
        "Delftstack5", "Delftstack6", "Delftstack7"};
    int Begin_Index = 2;
    int End_Index = 7;

    String[] Subset =
        Arrays.asList(Demo_Array).subList(Begin_Index, End_Index).toArray(new String[0]);
    System.out.println(Arrays.toString(Subset));
  }
}

出力:

[Delftstack3, Delftstack4, Delftstack5, Delftstack6, Delftstack7]

カスタム メソッドを使用して配列のサブセットを取得する

配列のサブセットを取得するメソッドを書きましょう。 for ループを使用して、指定された範囲内の配列のサブセットを取得できます。

例:

package delftstack;

import java.util.Arrays;

public class Array_Subset {
  public static void main(String[] args) {
    String[] Demo_Array = new String[] {"Delftstack1", "Delftstack2", "Delftstack3", "Delftstack4",
        "Delftstack5", "Delftstack6", "Delftstack7"};
    int Begin_Index = 2;
    int End_Index = 7;

    String[] Subset = new String[End_Index - Begin_Index];
    for (int x = 0; x < Subset.length; x++) {
      Subset[x] = Demo_Array[Begin_Index + x];
    }
    System.out.println(Arrays.toString(Subset));
  }
}

出力:

[Delftstack3, Delftstack4, Delftstack5, Delftstack6, Delftstack7]
著者: Sheeraz Gul
Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook

関連記事 - Java Array