HOWTO · Java

Java에서 배열의 하위 집합 얻기

이 자습서는 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]