Java에서 primit가 아닌 타입의 배열을 복사하는 방법은 무엇입니까? 성능 문제는 어떻습니까? 합니다 (offset
및 length
파라미터로하면 어레이의 임의의 부위를 복사 할 수있는 기능을 제공)Java : 원시 타입이 아닌 배열 복사
답변
오래된 학교 방법이었다
public static void java.lang.System.arraycopy(Object src, int srcPos,
Object dest, int destPos, int length)
이 다른 하나 개의 기존 배열에서 copys. 복사본을 복사본으로 만들고 있다고 가정하면 새로운 배열을 직접 할당해야합니다.
JDK 6 이상부터 java.util.Arrays
클래스에는 새로운 크기의 배열 복사본을 만드는 데 사용되는 숫자가 copyOf
개 있습니다. 관련되어있는 것들이다 :
public static <T> T[] copyOf(T[] original, int newLength)
및
public static <T,U> T[] copyOf(U[] original, int newLength,
Class<? extends T[]> newType)
이 처음 원래 어레이 형을 이용하여 복사를 만들고, 두 번째는 다른 배열 형태로 복사한다.
arraycopy와 3 인수 copyOf는 원본 (소스) 배열의 각 요소 유형을 대상 배열 유형과 대조해야합니다. 그래서 두 가지 모두 유형 예외를 던질 수 있습니다. copyOf (이론적으로 적어도)의 2 인자는 타입 검사를 할 필요가 없으므로 (이론적으로) 더 빨리 수행되어야합니다. 실제로 상대적인 성능은 구현에 따라 다릅니다. 예를 들어, arraycopy
은 종종 JVM에 의해 특별한 대우를받습니다.
int [] array = {1, 2, 3}; int [] copy = Arrays.copyOf (array, array.length, Integer.class);'컴파일되지 않습니다 (_ "Array 유형의 copyOf (int [], int) 메서드는 인수에 적용 할 수 없습니다 (int [], int, Class
System.arraycopy
. 또는 JDK 6에 추가하고 사용할 수 있도록 일반적인 방법입니다했다
java.util.Arrays.copyOf
:이 유형 좁힐 수 있습니다
Integer[] is = new Integer[] { 4, 6 }
Integer[] copy = Arrays.copyOf(is, is.length);
또는 :
Number[] is = new Number[]{4, 5};
Integer[] copy = Arrays.copyOf(is, is.length, Integer[].class);
참고 당신이 할 수있는 배열에 clone
방법을 사용하십시오.
- 1. Java : 원시 클래스 변환
- 2. Java 원시 코드 프리미티브
- 3. 복사 구조 및 배열
- 4. C에서 배열 복사
- 5. 문자 배열 복사
- 6. C에서 배열 복사 반전
- 7. 원시 포인터를 사용하지 않고지도 키 복사 방지
- 8. 다차원 배열 행을 단일 배열 java
- 9. Java HTTP 게시 원시 데이터
- 10. jquery가 아닌 원시 자바 스크립트 (예를 들어)
- 11. Java - Jar 폴더 복사
- 12. Java, jre로 파일 복사
- 13. Java 콜렉션. 원시 타입이없는 이유는 무엇입니까?
- 14. C# 배열 초기화 - 기본값이 아닌
- 15. 자바 소스를 원시 형식이 아닌 제네릭 형식을 사용하도록 자동 변환하십시오.
- 16. Objective C의 구조체 또는 원시 데이터 형식 배열
- 17. 도메인의 일부가 아닌 서버로 파일 복사
- 18. Java : 디렉토리 간 파일 복사
- 19. PowerPoint 슬라이드 복사 Java (선호)
- 20. JNI를 사용하여 Java 파일 복사
- 21. java 배열 스레드 안전
- 22. Java generics 및 배열
- 23. Java 2D 배열 문제
- 24. Java : 배열 및 벡터
- 25. Java 휘발성 배열?
- 26. JAVA - 바이트 배열
- 27. Java 소켓으로 배열 보내기
- 28. MongoDB Java 드라이버 배열
- 29. 다차원 배열 조작 - Java
- 30. Java 정렬 병렬 배열
배열 자체 (즉, 배열의 참조) 만 복사 하시겠습니까? 아니면 배열의 참조가 가리키는 모든 객체를 복제하고 싶습니까? – Jesper