Computer >> 컴퓨터 >  >> 프로그래밍 >> Android

Kotlin 리스트(List)와 배열(Array)의 차이점 완벽 비교

Kotlin의 리스트(List)와 배열(Array)이란?

리스트(List)배열(Array)은 Kotlin에서 가장 널리 사용되는 두 가지 컬렉션입니다. 두 컬렉션 모두 순차적인 메모리 위치에 데이터를 저장한다는 공통점이 있지만, 구현 방식, 가변성(mutable), 크기 조절, 성능 측면에서 중요한 차이가 있습니다.

이 글에서는 비교표와 실제 예제 코드를 통해 두 컬렉션 유형의 차이점을 자세히 살펴보겠습니다.

배열(Array) vs 리스트(List) 주요 차이점

구분배열(Array)리스트(List)
구현 방식Array<T> 클래스로 구현됩니다.List<T> 또는 MutableList<T> 인터페이스를 통해 구현됩니다.
가변성Array<T>는 가변적(mutable)입니다. 즉, 저장된 값은 변경할 수 있습니다.List<T>는 기본적으로 불변(immutable)입니다. 가변 리스트를 만들려면 별도로 MutableList<T> 인터페이스를 사용해야 합니다.
크기배열은 크기가 고정되어 있어 생성 이후에는 크기를 늘리거나 줄일 수 없습니다.MutableList<T>add()remove() 함수를 제공하여 크기를 동적으로 늘리거나 줄일 수 있습니다.
성능IntArray, DoubleArray 등 다양한 원시 타입(primitive type)에 최적화되어 있어 더 높은 성능이 필요할 때 적합합니다.코드 가독성과 접근성이 뛰어나고, 크기가 동적이므로 메모리 관리 측면에서도 유리합니다.

예제 코드

다음 예제에서는 Kotlin에서 배열과 리스트를 선언하는 방법, 그리고 가변 리스트의 요소를 추가·삭제하여 조작하는 방법을 확인할 수 있습니다.

fun main(args: Array<String>) {

    // 배열 선언
    val a = arrayOf(1, 2, 3)

    // 배열의 모든 값 출력
    println("배열의 요소:")
    a.forEach {
        println(it)
    }

    // 불변 리스트 선언
    val names = listOf("stud1", "stud2", "stud3")

    // 리스트의 모든 값 출력
    println("\n리스트의 요소:")
    names.forEach {
        println(it)
    }

    // 가변 리스트 선언
    val days: MutableList<String> = mutableListOf(
        "Monday", "Tuesday", "Wednesday",
        "Thursday", "Friday", "Saturday", "Sunday"
    )

    // 가변 리스트의 모든 값 출력
    println("\n수정 전 가변 리스트:")
    days.forEach {
        print(it + ", ")
    }

    >// add()와 remove()로 리스트 동적으로 수정
    days.add("Holiday")
    days.remove("Monday")

    println("\n\n수정 후 가변 리스트:")
    days.forEach {
        print(it + ", ")
    }
}

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

배열의 요소:
1
2
3

리스트의 요소:
stud1
stud2
stud3

수정 전 가변 리스트:
Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday,

수정 후 가변 리스트:
Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday, Holiday,

정리

배열은 고정된 크기와 원시 타입 최적화 덕분에 성능이 중요한 상황에 적합하고, 리스트는 불변·가변 선택이 가능하며 동적인 크기 조절과 뛰어난 코드 가독성을 제공합니다. 따라서 데이터 개수가 미리 정해져 있고 성능이 중요하다면 배열을, 요소의 추가·삭제가 빈번하거나 유연한 컬렉션이 필요하다면 MutableList를 사용하는 것이 좋습니다.