자바 에서 두 개의 배열 을 하나 로 합 쳤 다.
String[]
를 하나 로 합 친다.void f(String[] first, String[] second) { String[] both = ??? }
보기에 매우 간단 한 문제 같다.그러나 어떻게 해야만 코드 를 효율 적 이 고 간결 하 게 쓸 수 있 는 지 는 생각해 볼 만하 다.
먼저 System. arraycopy ()
T[] concat(T[] A, T[] B) { T[] C= new T[A.length+B.length]; System.arraycopy(A, 0, C, 0, A.length); System.arraycopy(B, 0, C, A.length, B.length); return C; }
이 중 범 형
T
은 실제 클래스 로 바 꿔 야 컴 파일 을 통과 할 수 있 습 니 다. new T[length]
자바 에 서 는 허용 되 지 않 기 때 문 입 니 다.Arrays.copyOf()
자바 6 에 서 는 하나의 방법
Arrays.copyOf()
이 있 습 니 다. 일반적인 함수 입 니 다.public static <T> T[] concat(T[] first, T[] second) { T[] result = Arrays.copyOf(first, first.length + second.length); System.arraycopy(second, 0, result, first.length, second.length); return result; }
여러 개 를 합 치 려 면 이렇게 쓸 수 있 습 니 다.
public static <T> T[] concatAll(T[] first, T[]... rest) { int totalLength = first.length; for (T[] array : rest) { totalLength += array.length; } T[] result = Arrays.copyOf(first, totalLength); int offset = first.length; for (T[] array : rest) { System.arraycopy(array, 0, result, offset, array.length); offset += array.length; } return result; }
Array.newInstance
Array.newInstance
을 사용 하여 배열 을 생 성 할 수 있 습 니 다.private static <T> T[] concat(T[] a, T[] b) { final int alen = a.length; final int blen = b.length; if (alen == 0) { return b; } if (blen == 0) { return a; } final T[] result = (T[]) java.lang.reflect.Array. newInstance(a.getClass().getComponentType(), alen + blen); System.arraycopy(a, 0, result, 0, alen); System.arraycopy(b, 0, result, alen, blen); return result; }
apache-commons
apache - comons 에서
ArrayUtils.addAll(Object[], Object[])
방법 이 있 습 니 다. 우리 한 줄 로 해결 할 수 있 습 니 다.String[] both = (String[]) ArrayUtils.addAll(first, second);
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.