배달의 민족, 토스 등 몇몇 IT기업은 안드로이드 개발 직군을 지원할 때 코틀린
으로만 코딩테스트를 응시할 수 있다. 자료형 선언이 귀찮아서 C++
에서 파이썬
으로 넘어가 코딩 테스트를 치루던 나로서는 자료형 맞추는 데서 시간을 많이 썼다. 파이썬
은 []
으로 리스트, 배열을 모두 커버할 수 있기 때문...
안드로이드 개발을 하면서도 List<>
Array<>
ArrayList<>
등 보기에는 다 비슷한 자료형을 자주 마주치기 때문에 이번 기회에 확실히 알아보고자 한다.
포인터
로 값을 접근하며 이는 메모리 관리에 이점을 가지나 검색 성능은 떨어지는 특징이 있다.immutable
합니다. 따라서 내부 원소을 변경할 수 없는 리스트 Mutable List
가 따로 존재한다.val peopleName = listOf()
val immutablePeopleName = listOf("juyong", "jiwoo")
val mutablePeopleName = mutableListOf("juyong", "jiwoo")
array(배열)
은 생성되는 순간 size
가 고정되고 원소의 삭제나 추가가 불가능한 정적 자료구조임이 가장 큰 특징이다. index
로 값을 접근하며 이는 검색 성능에서 이점을 가진다. array
안에 원소는 값은 자유롭게 변경할 수 있다.Mutable
동작하기 때문에 선언 시 val
var
모두 똑같이 동작한다. val peopleName = arrayof("juyong", "jiwwo)
val arr = arraryof("juyong", 2) //서로 다른 타입을 같이 저장 가능
// 원소가 모두 원시형(Primitive) 타입일 때
val numbers = intArrayof(1, 2) //[1, 2]
val numbers = IntArray(5) //[0, 0, 0, 0, 0]
val numbers = IntArray(5){1} //[1, 1, 1, 1, 1]
val numbers = IntArray(5){it * 1} //[0, 1, 2, 3, 4, 5]
ArrayList
는 내부가 array
인 list
를 의미한다. list
이지만 연속된 메모리 공간을 차지하는 array
의 특성을 가지고 index
를 통해 접근 가능하다. list
의 특징인 가변성
을 가지게 된다.var arrayList = arrayListOf<Int>()
List
와Array
의 가장 큰 차이는Array
는 처음부터 고정된 크기를 갖고,List
는 동적인 크기를 활용할 수 있다는 점이다.