MutableList는 Interface이고, mutableListOf
를 사용하면 ArrayList가 할당된다.
ArrayList는 expect 키워드가 붙은체 구현체 없이 선언만 되어 있다. 이것은 코틀린의 멀티플랫폼 특성에 따른 것으로, 실제 구현체는 Kotlin이 변환 가능한 JVM, JS, Native 라이브러리에 있으며, 구현체는 actual 키워드를 붙인다.
In Kotlin,
expect
is used in multiplatform projects to specify that the actual implementation of the class or function will be provided for each platform (JVM, JS, Native) separately. Theexpect
keyword declares a common API without defining its implementation. The actual implementation (actual
keyword) will be platform-specific and is not visible in the common code. by GPT4
https://chat.openai.com/c/cf7e02cb-2bad-4a0f-8d56-ed622e913bcd
Expected and actual declarations | Kotlin
ArrayList의 capacity보다 많은 데이터가 들어오면, 더 큰 capacity를 가진(보통은 이전의 1.5배) ArrayList를 생성하고, 새로운 ArrayList에 기존 ArrayList의 데이터를 복사한다. 여기에 O(n) 시간이 소요된다. 복사가 완료되면 변수가 새로운 ArrayList를 가리키도록 참고값을 변경한다.
https://chat.openai.com/c/d62a1cb6-d1a4-48ce-a6a0-55ebe04a74a4
add, remove, removeAt과 같은 함수를 이용해서 리스트의 중간에 값을 삽입하거나, 삭제하면, 그 이후에 있는 값들이 한 칸씩 앞이나 뒤로 이동한다. 따라서 O(n) 시간이 소요된다.
컬렉션이 사용하는 값의 타입을 지정하기 위한 도구
set, get 등은 함수이고 size는 프로퍼티이다. 프로퍼티는 클래스의 멤버 변수를 나타내는 용어다.