
배달의 민족, 토스 등 몇몇 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는 동적인 크기를 활용할 수 있다는 점이다.