ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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])  // 6

     

    List

    * 순서가 있는 자료형들의 집합이다.

    * 불연속적인 메모리 공간을 점유하여 메모리 관리에 용이하다.(포인터로 값을 접근하는 것)

    * 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의 차이에 대해 알아보는 시간이 되어 좋았다.
    앞으로도 이러한 질문들에 대해 알아보도록 하겠다.

Designed by Tistory.