Kotlin ArrayList<Int> vs. IntArray - 리스트, 배열
Notepad96
·2020. 11. 21. 22:28
1. ArrayList<Int> vs. IntArray
이 둘의 차이점을 간단하게 말하자면 이 둘은 각각 Java에서
ArrayList<Int> -> new ArrayList<Integer>
IntArray -> new int[5]
라고 볼 수 있다.
즉, arrayList와 배열간에 가장 큰 차이를 뽑자면 동적, 정적인 크기이다.
IntArray는 그냥 Int 타입의 데이터를 저장하는 배열이므로 선언 시 size를 지정해주며 이후 원소를 추가하거나 제거가 불가능하다.
( index를 통하여 값에 접근하여 읽기/쓰기는 가능하다.)
배열(Array) 생성 및 초기화
반면에 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. 참 조
'Kotlin > Collections' 카테고리의 다른 글
Kotlin list for문 - index loop (0) | 2020.11.22 |
---|---|
Kotlin List, MutableList 추가, 삭제, 프로퍼티 (0) | 2020.11.22 |
Kotlin sort 정렬 오름차순, 내림차순, 임의 순 (0) | 2020.10.11 |
Kotlin JS sort 정렬 오름차순, 내림차순, 임의 순 (0) | 2020.10.09 |
Kotlin 변수 묶기 Pair, Triple (1) | 2020.10.08 |