본문 바로가기
Android(Kotlin)

[Kotlin Android] Array, ArrayList, List, MutableList

by 클리마 2022. 5. 28.
728x90

오늘은 Kotlin에서 사용하는 자료구조 중 배열과 리스트의 종류에 대해 정리해보고자 합니다. 서로의 차이점을 위주로 정리해보도록 하겠습니다.


Array

  • 정적 할당 → 선언 시 크기를 지정하거나 초기화를 진행해야 함.
  • element의 수정이 가능
  • element의 추가, 삭제는 불가능
val array: Array<Int> = arrayOf(1,2,3)
val array2 = arrayOf(1,"d",3.4f)        //Array<Any>로 자동타입추론

array[0] = 3
array.set(1, 5) //set(index, value)
array[1]        //5
array.get(0)    //3

 

List

List는 수정이 불가능한 List와 수정이 가능한 mutableList로 나누어집니다.

  • List(수정 불가능)
    • get(), contains() 등의 함수가 쓰임
    val list: List<Int> = listOf(1,2,3)
    val list2 = listOf(1,"d",11L) //List<Any>로 자동타입추론
    
    list[0] = 2   //수정 불가능하기 때문에 Error 발생
    var result = list.get(0)
  • mutableList(수정 가능)
    • add(), remove(), set(), clear() 등의 함수가 쓰임
    val arrayList = arrayListOf<Int>()
    arrayList.add(10)
    arrayList.add(20)
    //arrayList의 element를 추가하더라도 주소가 변경되는 것이 아니기 때문에 val을 써도 element 추가가능
    
    arrayList = arrayListOf()   //val cannot be reassigned
    • ArrayList
      • 얼핏 보면 Array계열의 자료구조 같지만 Kotlin 공식문서를 보면 ArrayList는 MutableList 인터페이스를 상속받은 구현체임을 알 수 있다.
      • 그렇기 때문에 크기가 자유롭고 값을 수정할 수 있다.
    class ArrayList<E> : MutableList<E>, RandomAccess

지금까지 Array와 List, MutableList, 그리고 ArrayList의 특징을 정리해보았습니다.

각자의 차이점을 파악하여 효율적인 코딩 하시길 바랍니다! 감사합니다.

728x90