[Kotlin] List 와 Array 와 ArrayList

JuYong-Kim·2022년 10월 14일
0

Kotlin 정복

목록 보기
2/3
post-thumbnail

배달의 민족, 토스 등 몇몇 IT기업은 안드로이드 개발 직군을 지원할 때 코틀린으로만 코딩테스트를 응시할 수 있다. 자료형 선언이 귀찮아서 C++에서 파이썬 으로 넘어가 코딩 테스트를 치루던 나로서는 자료형 맞추는 데서 시간을 많이 썼다. 파이썬[]으로 리스트, 배열을 모두 커버할 수 있기 때문...

안드로이드 개발을 하면서도 List<> Array<> ArrayList<> 등 보기에는 다 비슷한 자료형을 자주 마주치기 때문에 이번 기회에 확실히 알아보고자 한다.

1. List

  • 가변성을 가지는 동적 자료구조로 순서가 있는 자료형들의 집합을 의미한다.
  • 불연속적인 메모리 공간을 사용하기 때문에 포인터로 값을 접근하며 이는 메모리 관리에 이점을 가지나 검색 성능은 떨어지는 특징이 있다.
  • 기본적으로 리스트는 내부 원소를 변경할 수 있는immutable합니다. 따라서 내부 원소을 변경할 수 없는 리스트 Mutable List가 따로 존재한다.
val peopleName = listOf()

val immutablePeopleName = listOf("juyong", "jiwoo")
val mutablePeopleName = mutableListOf("juyong", "jiwoo")

2. Array

  • 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]

3. ArrayList

  • ArrayList는 내부가 arraylist를 의미한다.
  • 기본적으로 list이지만 연속된 메모리 공간을 차지하는 array의 특성을 가지고 index를 통해 접근 가능하다.
  • list의 특징인 가변성을 가지게 된다.
var arrayList = arrayListOf<Int>()

ListArray의 가장 큰 차이는 Array는 처음부터 고정된 크기를 갖고,List동적인 크기를 활용할 수 있다는 점이다.

profile
Hello World!

0개의 댓글