본문 바로가기
안드로이드 코틀린

[Kotlin][Android] 2개의 배열 하나로 합치기

by teamnova 2022. 6. 3.
728x90

코틀린에서 2개 이상의 배열을 하나로 합칠 때 다음 방법들을 사용할 수 있습니다.

  • Plus Operator
  • Spread Operator
  • Java의 System.arraycopy()

예제를 통해 2개의 배열을 하나로 합치는 방법을 소개하겠습니다.

1. Plus 연산자로 배열 합치기 

다음과 같이 + 연산자를 이용하면 두개 배열을 하나로 합친 배열을 생성할 수 있습니다.

fun main(args: Array<String>){
    val array1 = intArrayOf(1, 2, 3)
    val array2 = intArrayOf(4, 5, 6)

    val result = array1 + array2
    println("result : ${result.contentToString()}")
}

Output:

result : [1, 2, 3, 4, 5, 6]

+ 대신에 plus()를 사용해도 결과는 동일합니다.

val array1 = intArrayOf(1, 2, 3)
val array2 = intArrayOf(4, 5, 6)

val result = array1.plus(array2)

2. Spread Operator(전개 연산자)로 배열 합치기

코틀린에서 Spread Operator는 객체 앞에 *로 표현합니다. 만약 배열 앞에 *가 있으면, 배열이 갖고 있는 모든 요소들을 꺼내서 전달합니다.

아래 예제에서 intArrayOf()의 인자 *array1는 1, 2, 3의 요소들을 전달한다는 의미입니다.

fun main(args: Array<String>){
    val array1 = intArrayOf(1, 2, 3)
    val array2 = intArrayOf(4, 5, 6)

    val result = intArrayOf(*array1, *array2)
    println("result : ${result.contentToString()}")
}

Output:

result : [1, 2, 3, 4, 5, 6]

3. System.arraycopy()로 배열 합치기

System.arraycopy()는 자바에 다음과 같이 정의되어있습니다. 인자로 전달된 index를 참고하여, src 배열에서 des배열로 복사를 합니다.

* @param      src      the source array.
* @param      srcPos   starting position in the source array.
* @param      dest     the destination array.
* @param      destPos  starting position in the destination data.
* @param      length   the number of array elements to be copied.
public static native void arraycopy(Object src,  int  srcPos,
                                   Object dest, int destPos,
                                   int length);

System.arraycopy()를 이용하여 두개의 배열을 하나로 합치는 예제입니다.

fun main(args: Array<String>){
    val array1 = intArrayOf(1, 2, 3)
    val array2 = intArrayOf(4, 5)

    val result = IntArray(array1.size + array2.size)

    System.arraycopy(array1, 0, result, 0, array1.size)
    System.arraycopy(array2, 0, result, array1.size, array2.size)

    println("result : ${result.contentToString()}")
}

Output:

result : [1, 2, 3, 4, 5]