Kotlin ArrayList<Int> vs. IntArray - 리스트, 배열

Notepad96

·

2020. 11. 21. 22:28

300x250

 

 

 


1. ArrayList<Int> vs. IntArray

 

이 둘의 차이점을 간단하게 말하자면 이 둘은 각각 Java에서

 

ArrayList<Int> -> new ArrayList<Integer>

 

IntArray  ->  new int[5]

 

라고 볼 수 있다.

 

 

 

즉, arrayList와 배열간에 가장 큰 차이를 뽑자면 동적, 정적인 크기이다.

 

IntArray는 그냥 Int 타입의 데이터를 저장하는 배열이므로 선언 시 size를 지정해주며 이후 원소를 추가하거나 제거가 불가능하다.

( index를 통하여 값에 접근하여 읽기/쓰기는 가능하다.)

 

 

 

배열(Array) 생성 및 초기화

 

코틀린(Kotlin) 기본 문법(자료형, 형변환, 배열)

목 차 1. Kotlin 자료형 1-1. 변수 선언 - VAR vs. VAL 1-2. 자료형 1-3. 별칭(typealias) 1-4. 예제 2. Kotlin 형변환 2-1. 형변환 메소드 3. Kotlin 배열(Array) 3-1. Array 생성 3-2. 기본형 타입 Array 3-3...

notepad96.tistory.com

 

 

 

 

반면에 ArrayList는 Java에서 사용한 그대로 원소를 추가적으로 삽입하거나 삭제할 수 있다.

 

또한, Java에서와는 다르게

 

last() : 마지막 원소를 읽는 함수

 

max() : 최대값을 읽는 함수

 

같은 추가적인 함수들을 지원해 준다.

 

 

 

 


2. 코 드

환경 : Kotlin Version = 1.4.10, JVM

 

@OptIn(ExperimentalStdlibApi::class)
fun main(args: Array<String>) {
    // val arr = ArrayList<Int>()
    val arr = arrayListOf<Int>(5, 3, 1, 4, 2, 6)

    println("=============Array List=================")
    arr.forEach( {print("$it ")})



    println("\n=============삽 입=================")
    /* 삽입(add) */
    arr.add(7)
    arr.add(9)
    arr.add(8)
    arr += 10
    arr.add(1)
    arr.add(0, 100) // index = 0에 100 삽입


    println(arr.lastIndexOf(1)) // 뒤에서부터 1을 찾아 index 반환, 없다면 -1
    println("size = ${arr.size}")
    arr.forEach( {print("$it ")})



    println("\n==============삭 제================")
    /* 삭제(remove) */
    println("1 삭제 성공 : ${arr.remove(1)}")   // 앞에서부터 1을 찾아 삭제하고 true 반환
    println("1 삭제 성공 : ${arr.remove(1)}")
    println("1 삭제 성공 : ${arr.remove(1)}")   // 존재하지 않는다면 false 반환
    arr.removeAt(0) // index = 0 원소 삭제
    arr.removeAt(arr.size-1) // 마지막 원소 삭제

    /* 사용하기 위해서 @ ExperimentalStdlibApi 를 해주어야 한다. */
    arr.removeLast()    // 마지막 원소 삭제
    // arr.removeFirst()    // 처음 원소 삭제
    // arr.removeLastOrNull()   // 마지막 원소 삭제, list가 비어있을 경우 null 반환 위 함수들은 error 발생

    arr.forEach( {print("$it ")})



    println("\n============ArrayList to Array==================")
    /* ArrayList to Array */
    if(arr is ArrayList<Int>) { // Java에서 ArrayList
        println("ArrayList")
    }

    val arr2 = arr.toArray()    // Java에서 Array(배열)
    if(arr2 is Array) {
        println("Array")
    }
    // arr2.add() 존재 X

}

 

결 과

 

 

- add 함수를 사용하여서 원소를 삽입할 수 있다.

 

index를 지정하여 추가할수도 있으며 지정하지 않는다면 맨 뒤에 삽입 된다.

 

또한 += 연산자를 이용하여서 원소를 추가해줄 수 있다.

 

 

 

 

- remove 함수는 인수로 받은 원소가 존재한다면 삭제 후 true를 반환해주며

 

존재하지 않아 삭제하지 못하였다면 false를 반환해 준다.

 

 

 

- removeAt 함수는 인덱스를 지정하여 원소를 삭제할 수 있다.

 

 

 

- removeLast, removeFirst와 같은 함수들은 1.4 버전의 추가된 것으로 아직 실험적인 기능이여서 사용하기 위해서는

 

@OptIn(ExperimentalStdlibApi::class)

 

을 지정해주어야 한다.

 

 

 

 

- arrayList를 array 변환하여 보면 기존 arrayList에서는 add로 원소를 삽입할 수 있었지만 array로 변환 후 삽입, 삭제가 불가하다.

 

 

 

 

 


3. 참 조

 

 

ArrayList - Kotlin Programming Language

 

kotlinlang.org

 

 

 

Kotlin 1.3.70 Released – Kotlin Blog | JetBrains

Today we're happy to present to you the latest version of Kotlin – 1.3.70. This incremental release doesn’t provide any major new features. However, we've tried our best to improve the existing fun

blog.jetbrains.com

 

300x250