Java에서 배열 슬라이스

Shiv Yadav 2023년10월12일
  1. Java의 배열 슬라이싱
  2. Java에서 요소를 복제하여 배열 슬라이스
  3. Java의 copyOfRange() 메서드를 사용하여 배열 슬라이스
  4. Java 8 스트림을 사용하여 배열 슬라이스
Java에서 배열 슬라이스

이 기사는 Java에서 배열을 하위 배열로 슬라이스하는 데 도움이 될 것입니다.

Java의 배열 슬라이싱

배열 슬라이싱은 보다 광범위한 배열에서 하위 배열을 추출하는 Java 기술입니다.

k[]가 배열이라고 가정합니다. k[0]부터 k[6]까지 번호가 매겨진 7개의 구성 요소가 있습니다.

k[] = {5, 6, 7, 8, 9, 10, 11}

이제 k[2]k[5] 사이의 배열 인덱스 조각을 찾고 있습니다. startIndexk[2]이고 endIndex는 k[5]입니다.

결과적으로 아래의 슬라이스 배열을 얻습니다.

k[] = {7, 8, 9, 10}

다음 섹션에서는 Java에서 배열 슬라이스를 찾는 방법을 배웁니다.

Java에서 요소를 복제하여 배열 슬라이스

배열의 조각을 얻는 기본 제공 방법입니다. 제공된 배열의 시작 및 끝 인덱스는 이 절차에서 초기에 결정됩니다.

그 후, 우리는 크기 독립적인 빈 배열(슬라이스 배열)을 생성합니다(endIndex - startIndex). 제공된 배열에서 항목(startIndex에서)을 슬라이스 배열로 복사하고 마지막으로 슬라이스 배열을 인쇄합니다.

제공된 배열의 슬라이스 배열을 얻기 위해 Java 프로그램에서 위에서 설명한 방법을 사용합시다. 우리는 이 응용 프로그램에서 기본 종류의 배열을 사용할 것입니다.

import java.util.Arrays;

public class Copy {
  public static int[] getSlice(int[] arr, int stIndx, int enIndx) {
    int[] sclicedArr = new int[enIndx - stIndx];

    for (int i = 0; i < sclicedArr.length; i++) {
      sclicedArr[i] = arr[stIndx + i];
    }

    return sclicedArr;
  }

  public static void main(String args[]) {
    int[] arr = {20, 65, 87, 19, 55, 93, 76, 98, 54, 21};

    int stIndx = 2, enIndx = 6;

    int[] sclicedArr = getSlice(arr, stIndx, enIndx + 1);

    System.out.println("Slice of an Array: " + Arrays.toString(sclicedArr));
  }
}

코드를 실행하려면 프로그램을 Java 파일로 저장하고 Java IDE에서 실행하십시오.

출력:

자바 어레이 스플라이스 - 출력 1

Java의 copyOfRange() 메서드를 사용하여 배열 슬라이스

Java Array 클래스에는 copyOfRange() 메소드가 포함되어 있습니다. 배열의 명시된 범위를 새로 형성된 배열(슬라이스 배열)에 복제하고 원래 배열의 지정된 범위로 새로 생성된 배열을 반환합니다.

배열을 슬라이싱하려면 요소를 저장하기 위해 O(n) 시간과 O(n) 공간이 필요합니다. 여기서 n은 결과 배열의 요소 수입니다.

통사론:

public static int[] copyOfRange(int[] original, int from, int to)

다음 3개의 매개변수가 메소드에 의해 구문 분석됩니다.

  • original: 반드시 찾아야 하는 슬라이스가 있는 배열입니다.
  • from: 첫 페이지의 인덱스입니다. 0에서 배열 길이의 범위에 있어야 합니다.
  • to: 마지막 인덱스입니다.

다음 예외가 발생합니다.

시작 인덱스가 0보다 작거나 원래 배열의 길이보다 크면 ArrayIndexOutOfBoundsException이 발생합니다. 시작 인덱스가 끝 인덱스보다 중요하면 IllegalArgumentException이 발생합니다.

지정된 배열이 null이면 NullPointerException이 발생합니다.

import java.util.Arrays;

public class Copy1 {
  public static int[] slice(int[] arr, int stIndx, int enIndx) {
    int[] sclicedArr = Arrays.copyOfRange(arr, stIndx, enIndx);

    return sclicedArr;
  }

  public static void main(String args[]) {
    int[] arr = {20, 65, 87, 19, 55, 93, 76, 98, 54, 21};
    int stIndx = 3, enIndx = 8;

    int[] sliceArray = slice(arr, stIndx, enIndx + 1);

    System.out.println("Slice of Array: " + Arrays.toString(sliceArray));
  }
}

코드를 실행하려면 프로그램을 Java 파일로 저장하고 Java IDE에서 실행하십시오.

출력:

자바 배열 스플라이스 - 출력 2

Java 8 스트림을 사용하여 배열 슬라이스

아래 지침에 따라 Java 8 스트림을 사용하여 배열의 조각을 찾을 수 있습니다.

  • 시작 및 끝 인덱스 배열을 먼저 찾습니다.
  • range() 함수를 사용하여 항목(범위에 있는 항목)을 Primitive Stream으로 변환합니다.
  • map() 함수를 사용하여 배열에서 제공된 요소를 매핑합니다.
  • toArray() 함수를 사용하여 매핑된 배열을 배열로 변환합니다.
  • 슬라이스된 배열을 인쇄합니다.
import java.util.Arrays;
import java.util.stream.IntStream;

public class NewClice {
  public static int[] findSlice(int[] arr, int stIndx, int enIndx) {
    int[] slice_arr = IntStream.range(stIndx, enIndx).map(i -> arr[i]).toArray();

    return slice_arr;
  }

  public static void main(String args[]) {
    int[] arr = {20, 65, 87, 19, 55, 93, 76, 98, 54, 21, 657};
    int stIndx = 2, enIndx = 8;

    int[] slice_arr = findSlice(arr, stIndx, enIndx + 1);

    System.out.println("Slice of array for the specific range is: " + Arrays.toString(slice_arr));
  }
}

코드를 실행하려면 프로그램을 Java 파일로 저장하고 Java IDE에서 실행하십시오.

자바 어레이 스플라이스 - 출력 3

작가: Shiv Yadav
Shiv Yadav avatar Shiv Yadav avatar

Shiv is a self-driven and passionate Machine learning Learner who is innovative in application design, development, testing, and deployment and provides program requirements into sustainable advanced technical solutions through JavaScript, Python, and other programs for continuous improvement of AI technologies.

LinkedIn

관련 문장 - Java Array