다른 배열에서 하위 배열을 만드는 방법은 무엇입니까? 첫 번째 배열에서 색인을 가져 오는 메소드가 있습니까?
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(..)
답변
java.util.Arrays 클래스의 copyOfRange 메소드를 사용하십시오.
int[] newArray = Arrays.copyOfRange(oldArray, startIndex, endIndex);
상세 사항은:
답변
예, System.arraycopy (Object, int, Object, int, int)라고 합니다.
REP STOSW
JIT (루프가 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
답변
이 링크 에서 다운로드 가능한 Apache ArrayUtils를 사용하면 메소드를 쉽게 사용할 수 있습니다.
subarray(boolean[] array, int startIndexInclusive, int endIndexExclusive)
“boolean”은 예일 뿐이며 모든 기본 요소 Java 유형에 대한 메소드가 있습니다.
답변
JDK> = 1.8
위의 모든 답변에 동의합니다. Java 8 Streams에는 좋은 방법이 있습니다.
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();
답변
int newArrayLength = 30;
int[] newArray = new int[newArrayLength];
System.arrayCopy(oldArray, 0, newArray, 0, newArray.length);