HOWTO · 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() 메서드를 사용하여 필요한 범위의 요소를 Primitive Stream으로 변환해야 합니다. 다음으로 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]