-
Array와 List의 차이점 알고 있어?카테고리 없음 2025. 4. 22. 11:39
오늘은 안드로이드 개발이나 Kotlin을 사용한다면 한 번쯤 들어봤을 질문..
"Array와 List의 차이"에 대해서 알아보겠다.
1. Array와 List 알고 있어?
Array
* 생성되는 순간 값은 고정이 되며 원소 삭제 및 추가 기능을 사용할 수 없다.
* Array안에서 값은 자유롭게 변환이 가능하다.
* val로 선언하든 var로 선언하든 같은 동작을 한다.
* arrayOf 키워드로 생성이 가능하다.
* 서로 다른 타입이 공존할 수 있다.
val mix = arrayOf("명훈", "입니다", 5, 2)* Array끼리 서로 합치는 동작이 가능하다.
val audgns = intArrayOf(1, 2, 3) val ggyu = intArrayOf(4, 5, 6) val um = audgns + ggyu println(um[5]) // 6List
* 순서가 있는 자료형들의 집합이다.
* 불연속적인 메모리 공간을 점유하여 메모리 관리에 용이하다.(포인터로 값을 접근하는 것)
* List에서 인덱스는 그냥 몇 번째 정도인가의 의미를 가지게 된다.
* Null과 중복 데이터를 허용한다.
* 두 리스트가 서로 원소들의 인덱스, 내용이 서로 모두 같다면 같이 리스트로 간주한다.
* 값을 변경할 수 없는 리스트 -> Immutable List
val android = listOf("di", "hilt", "koin") println(android)* 값을 변경할 수 있는 리스트 -> Mutable List
val myList = mutableListOf("tuna", "salmon", "shark") myList.remove("shark") val numbers = mutableListOf(1, 2, 3, 4) numbers.add(5) numbers.removeAt(1) numbers[0] = 0 numbers.shuffle() println(numbers)2. 장단점
Array 장단점
장...
* 인덱스를 활용한 검색이 용이하다.
* 연속된 메모리 공간을 활용하여 메모리 관리가 편하다.
단......
* 배열에서 값을 삭제해서 배열의 크기는 줄어들지 않기 때문에 메모리가 낭비가 될 수 있다.
* 정적타입이어서 배열 크기를 컴파일 이전에 지정해줘야 하는 번거로움이 있다.
* 배열 크기를 이후에 재조정하는 것이 불가능하여 불편하다.
List 장단점
장...
* 포인터를 사용하여 다음 값을 보고 있어 삽입, 삭제 동작이 빠르다.
* 동적 타입이어서 크기가 따로 정해져 있지 않아 자유자재로 이용이 가능하다.
* 메모리 재사용이 용이하다.
단.........
* 불연속적 메모리 공간을 사용하여 검색 기능에서는 좋지 않은 성능을 보여준다.
* 포인터를 통해 다음 값을 보기 때문에 포인터를 담기 위한 추가적인 메모리 공간이 필요하다.
3. 정리
* Array는 무조건 고정된 사이즈를 가진다(정적). List는 사이즈 변경이 가능하다(동적).
* List와 다르게 Array는 동등성 비교를 지원하지 않아 인덱스와 값이 모두 같더라도 false를 반환한다.
kotlin으로 개발을 할 때 자주 듣는 Array와 List의 차이에 대해 알아보는 시간이 되어 좋았다.
앞으로도 이러한 질문들에 대해 알아보도록 하겠다.