상세 컨텐츠

본문 제목

Kotlin - Array, List, ArrayList, Map

Kotlin/DataType

by KDLiam 2023. 8. 29. 15:27

본문

배열 : 연관된 데이터를 모아서 관리하기 위해 사용되는 데이터 타입

 

Kotlin의 배열에는 Array, List, Map이 존재한다.

 

Collection Type 특징 Size 조작 Element 변경 가능 Index 접근 Key-Value 저장
Array 고정 크기 배열 No Yes Yes No
List Read Only ||
Mutable
가변적 No Yes No
ArrayList 가변 크기 리스트 가변적 Yes Yes No
Map Key-Value 가변적 No No Yes

 

1. Array

(1) 선언

 

값을 넣지 않고 선언

var ArrayName = arrayOf<Type>(Size)
var ArrayName = arrayOfNulls<Type>(Size) // null로 채워진 배열 선언

 

값을 넣고 선언

var ArrayName = arrayOf(1, 2, 3)
var ArrayName = arrayOf('a', 'b', 'c')

// 0으로 초기화
var arr = Array(5) {i->0}
var arr = Array<Int>(5) {i->0}

 

(2) 출력

 

forEach

var arr = arrayOf(1, 2, 3)
arr.forEach { println(it) }

 

contentToString() : 배열 형태로 출력

println(arr.contentToString())

 

JoinToString("String")

println(arr.joinToString("String")

// ex)
println(arr.joinToString("+")
// "1+2+3"

 

(3) 특징

고정 크기의 배열

 

 

Index를 이용해 값 변경 & 접근 가능

ArrayName[Index]
ArrayName[Index] = Value

// ex)
nums = arrayOf(1, 2, 3, 4)
 nums[0] = 10
 
 // [10, 2, 3, 4]

 

Size

ArrayName.size

 

set() : Index 위치의 값을 Value로 변경

ArrayName.set(Index, Value)

 

get() : Index의 값 가져오기

ArrayName.get(Index)

 

getOrElse() : Index 값을 반환하고, Index의 값이 없다면 Value를 반환

getOrElse(Index) { Value }

 

getOrNull() : Index 값을 반환하고, Index의 값이 없다면 Null를 반환

ArrayName.getOrNull(Index)

 

plus() : 원소 추가

ArrayName = ArrayName.push(Value)

 

 

2. List

(1) 선언

 

사이즈와 값을 모두 모르는 경우

val ListName: List<Type> = List(Size)
val MutableListName: MutableList<Type> = mutableListOf(Size)

 

사이즈만 아는 경우

val emptyListWithSize: List<Any?> = List(5) { null }
val emptyMutableListWithSize: MutableList<Any?> = MutableList(5) { null }

 

값을 넣고 선언

val ListName: List<Type> = List(Size) { DefaultValue }
var MutableListName: MutableList<Type> = MutableList(Size) { DefaultValue }

 

(2) 출력

 

forEach

ListName.forEach{ println(it) }

 

toString() : 배열 형태로 출력

println(ListName.toString())

 

JoinToString("String")

println(ListName.joinToString("Separator"))

 

(3) 특징

Read Only & Mutable 객체 두 가지 형태로 제공

 

List : 불변 ( 값 변경 X )

MutableList : 가변 ( 값 변경 O )

 

3. ArrayList

(1) 선언

val arrayList: ArrayList<Type> = ArrayList()
val arrayList: ArrayList<Type> = arrayListOf()

(2) 출력

그냥 출력!

println(arrayList)

 

forEach()

arrayList.forEach{ println(it) }

 

toString()

println(arrayList.toString())

 

(3) 특징

Read Only & Mutable 객체 두 가지 형태로 제공

 

Index로 접근 가능

 

add() : 추가

 

set() : 수정

 

remove() : 삭제

 

isEmpty() : 비어있는가?

 

size : Size 구하기

 

중복 허용

 

 

4. Map

(1) 선언

 

val map: Map<KeyType, ValueType> = mapOf()
val mutableMap: MutableMap<KeyType, ValueType> = mutableMapOf()
val map: Map<KeyType, ValueType> = mapOf(
    key1 to value1,
    key2 to value2,
    // ...
)

 

(2) 출력

val map: Map<String, Int> = mapOf("one" to 1, "two" to 2, "three" to 3)

map.forEach { (key, value) ->
    println("$key -> $value")
}
println(map)
println(map.toString())

 

(3) 특징

 

Key와 Value로 구성되어 있음

 

불변 : Map

가변 : MutableMap

 

순서 보장 X

 

map.keys // 키 모음 얻기

map.values // 값 모음 얻기

 

entries : 키와 값의 쌍을 얻기


[ 참고 사이트 ] 

1. https://kotlinlang.org/docs/generics.html#type-projections

 

Generics: in, out, where | Kotlin

 

kotlinlang.org

2. https://hello-bryan.tistory.com/496

 

[Kotlin] 코틀린 기본 문법 2 (배열의 모든 것)

개발하면서 배열은 정말 많이 사용됩니다. 코틀린에서 배열 사용 방법에 대해서 작성 해보겠습니다. 배열 선언과 초기화 Kotlin에서 배열을 선언하고 초기화하는 방법은 다음과 같습니다: // 배열

hello-bryan.tistory.com

3. https://jimoo-vision.tistory.com/20

 

Kotlin 코틀린 Arrays 배열 (기본기) - jimoo

https://kotlinlang.org/docs/basic-types.html#arrays Basic types | Kotlin kotlinlang.org Arrays in Kotlin are represented by the Array class. It has get and set functions that turn into [] by operator overloading conventions, and the size property, along wi

jimoo-vision.tistory.com