IT이야기

Java에서 다른 어레이에서 서브 어레이를 작성하는 방법

cyworld 2022. 6. 14. 22:42
반응형

Java에서 다른 어레이에서 서브 어레이를 작성하는 방법

다른 어레이에서 서브 어레이를 작성하는 방법다음과 같은 첫 번째 배열에서 인덱스를 가져오는 방법이 있습니까?

methodName(object array, int start, int end)

루프를 만들고 내 프로그램을 망치고 싶지 않아

에러가 계속 발생:

기호 메서드 copyOfRange(int[),int,int)를 찾을 수 없습니다.

코드는 다음과 같습니다.

import java.util.*;

public class testing 
{
    public static void main(String [] arg) 
    {   
        int[] src = new int[] {1, 2, 3, 4, 5}; 
        int b1[] = Arrays.copyOfRange(src, 0, 2);
    }
}

사용할 수 있습니다.

JDK > 1.5

Arrays.copyOfRange(Object[] src, int from, int to)

자바독

JDK <= 1.5

System.arraycopy(Object[] src, int srcStartIndex, Object[] dest, int dstStartIndex, int lengthOfCopiedIndices); 

자바독

Arrays.copyOfRange(..)Java 1.6에서 추가되었습니다.최신 버전이 없을 수도 있습니다.업그레이드가 불가능한 경우System.arraycopy(..)

, 시스템이라고 합니다.arraycopy(오브젝트, int, 오브젝트, int).

그래도 루프는 어딘가에서 실행됩니다.다만, 이 루프가 최적화되지 않는 한,REP STOSW(이 경우 루프는 CPU 내부에 있습니다)

int[] src = new int[] {1, 2, 3, 4, 5};
int[] dst = new int[3];

System.arraycopy(src, 1, dst, 0, 3); // Copies 2, 3, 4 into dst

JDK > = 1.8

위의 모든 답변에 동의합니다.Java 8 Stream에도 좋은 방법이 있습니다.

int[] subArr = IntStream.range(startInclusive, endExclusive)
                        .map(i -> src[i])
                        .toArray();

이 방법의 장점은 다양한 유형의 "src" 어레이에 유용하고 스트림에 대한 파이프라인 쓰기 작업을 개선하는 데 도움이 된다는 것입니다.

이 질문에 대해서는 특별히 언급하지 않지만, 예를 들어 소스 어레이가double[]그리고 저희는 이 노래를average()서브 어레이의 경우:

double avg = IntStream.range(startInclusive, endExclusive)
                    .mapToDouble(index -> src[index])
                    .average()
                    .getAsDouble();

링크에서 다운로드할 수 있는 Apache Array Utils를 사용하면 이 방법을 쉽게 사용할 수 있습니다.

subarray(boolean[] array, int startIndexInclusive, int endIndexExclusive) 

"syslog"는 예에 불과하며 모든 기본 Java 유형에 대한 메서드가 있습니다.

int newArrayLength = 30; 

int[] newArray = new int[newArrayLength];

System.arrayCopy(oldArray, 0, newArray, 0, newArray.length);

코드가 맞기 때문에 오래된 JDK를 사용하고 있을 거라고 생각합니다.이 메서드의 javadoc에는 1.6부터 있었다고 나와 있습니다.명령줄에서 다음을 입력합니다.

java -version

1.6을 실행하고 있지 않은 것 같습니다.

버전 1.6보다 이전 버전의 java를 사용하고 있습니다.System.arraycopy()대신.또는 환경을 업그레이드합니다.

언급URL : https://stackoverflow.com/questions/4439595/how-to-create-a-sub-array-from-another-array-in-java

반응형