[java] Java에서 배열의 일부만 가져 옵니까?

Java에 정수 배열이 있으며 그중 일부만 사용하고 싶습니다. 파이썬에서이 배열 [index :]과 같은 것을 할 수 있고 인덱스에서 배열을 반환합니다. Java에서 이와 같은 것이 가능합니다.



답변

Java에서 배열의 길이는 변경할 수 없습니다. 따라서 원하는 부분을 새 배열로 복사해야합니다. java.util.Arrays 클래스의 메소드를
사용하십시오 .copyOfRange

int[] newArray = Arrays.copyOfRange(oldArray, startIndex, endIndex);

startIndex 는 복사 할 범위의 초기 색인입니다.
endIndex 는 복사 할 범위의 최종 색인이며 배타적입니다. (이 색인은 배열 외부에있을 수 있습니다)

예 :

   //index   0   1   2   3   4
int[] arr = {10, 20, 30, 40, 50};
Arrays.copyOfRange(arr, 0, 2);          // returns {10, 20}
Arrays.copyOfRange(arr, 1, 4);          // returns {20, 30, 40}
Arrays.copyOfRange(arr, 2, arr.length); // returns {30, 40, 50} (length = 5)


답변

배열을 목록으로 감싸서 하위 목록을 요청할 수 있습니다.

MyClass[] array = ...;
List<MyClass> subArray = Arrays.asList(array).subList(index, array.length);


답변

예, Arrays.copyOfRange 를 사용할 수 있습니다

그것은 똑같은 일을합니다 (사본이 있습니다 : 초기 배열을 변경하지 마십시오).


답변

당신은 시도 할 수 있습니다:

System.arraycopy(sourceArray, 0, targetArray, 0, targetArray.length);// copies whole array

// copies elements 1 and 2 from sourceArray to targetArray
System.arraycopy(sourceArray, 1, targetArray, 0, 2); 

javadoc for System을 참조하십시오 .


답변

Java 1.6 이상을 사용 Arrays.copyOfRange하는 경우 배열의 일부를 복사하는 데 사용할 수 있습니다 . javadoc에서 :

지정된 배열의 지정된 범위를 새 배열로 복사합니다. (from) 범위의 초기 색인은 0과 사이에 있어야 original.length합니다. 의 값 original[from]from == original.length또는의 경우가 아니라면 사본의 초기 요소에 배치됩니다 from == to. 원래 배열의 후속 요소 값은 사본의 후속 요소에 배치됩니다. to보다 크거나 같아야 하는 범위 ( ) 의 최종 색인은 보다 클 from수 있으며 original.length,이 경우 false색인이보다 크거나 같은 사본의 모든 요소에 배치됩니다 original.length - from. 반환 된 배열의 길이는입니다 to - from.

다음은 간단한 예입니다 .

/**
 * @Program that Copies the specified range of the specified array into a new
 * array.
 * CopyofRange8Array.java
 * Author:-RoseIndia Team
 * Date:-15-May-2008
 */
import java.util.*;
public class CopyofRange8Array {
    public static void main(String[] args) {
       //creating a short array
       Object T[]={"Rose","India","Net","Limited","Rohini"};
        // //Copies the specified  short array upto specified range,
        Object T1[] = Arrays.copyOfRange(T, 1,5);
        for (int i = 0; i < T1.length; i++)
            //Displaying the Copied short array upto specified range
            System.out.println(T1[i]);
    }

}


답변

copyOfRange를 확인하십시오 . 예 :

int[] arr2 = Arrays.copyOfRange(arr,0,3);


답변

다음과 같은 것을 사용할 수 있습니다. Arrays#copyOfRange