Kotlin

[Kotlin] 코틀린 컬렉션 (Collection)

Meezzi 2023. 5. 17. 18:17
728x90

 

 

 

 

 

 

 

1. 컬렉션 (Collection)

 

컬렉션은 여러 요소를 함께 저장하고 구성할 수 있는 데이터 구조이다.

 

쉽게 말해 배열이라고 생각하면 될 것이다. 

 

하지만, 크기가 고정된 배열과 달리 컬렉션은 크기가 고정되어 있지 않다.

 

즉, 컬렉션은 동적으로 요소 수에 따라 확장되거나 축소될 수 있다.

 

 

 

컬렉션은 가변(mutable)과 불변(immutable), 두 가지 성격을 가지고 있다.

 

 

  1) Mutable (변경 가능)

변경 가능한 컬렉션은 생성 후 수정이 가능하다.

 

추후, 필요에 따라 요소를 추가, 제거 또는 수정할 수 있다.

 

 

  2) Immutable (변경 불가능)

이름에서 알 수 있듯, 생성되면 수정할 수 없는 컬렉션이다. 

 

Mutable과 달리, 추가, 제거 또는 변경할 수 없다.

 

 

 

어느 것을 쓰는 게 좋냐는 질문에는, 코드를 작성할 때, 불변한 Immutable을 사용하는 게 좋다.

 

변경이 안되기 때문에, 버그에 대한 위험이 줄어들고, 프로그램을 더 쉽게 이해하고 유지할 수 있기 때문이다. 

 

 

컬렉션은 특징에 따라 List, Set, Map 으로 구성되어 있다.

 

 

Kotlin Collection Architecture

 

 

2. 리스트 (List)

리스트는 중복된 값을 허용하는 데이터 요소들의 모임이다. 

 

 

 

  1) Mutable (변경 가능)

 

 

변경 가능한 컬렉션은 생성 후 수정이 가능하다.

 

추후, 필요에 따라 요소를 추가, 제거 또는 변경할 수 있다.

 

val 리스트명 = mutableListOf<자료형>("값1", "값2" ... )

변경 가능한 리스트는 앞에 mutable을 붙여 리스트를 생성한다.

 

자료형은 생략할 수 있다.

 

val mutableList = mutableListOf("apple", "banana", "orange")

// 리스트에 grape를 추가
mutableList.add("grape")

// 1번째 인덱스의 요소 제거
mutableList.removeAt(1)

// 0번째 데이터를 kiwi로 변경
mutableList[0] = "kiwi"

println(mutableList)

 

 

[출력결과]

[kiwi, orange, grape]

 

 

 

  2) Immutable (변경 불가능)

 

val 리스트명 = listOf<자료형>("값1", "값2" ... )

변경 불가능한 리스트는 앞에 수식어를 붙이지 않고, 바로 listOf로 생성할 수 있다.

 

자료형은 생략할 수 있다.

 

val immutableList = listOf("apple", "banana", "orange")

// 0번째 리스트에 접근
val firstElement = immutableList[0]

println(immutableList)

 

 

 

[출력결과]

[apple, banana, orange]

 

 

 

 

 

 

3. 세트 (Set)

 

세트(Set)는 중복된 값을 허용하지 않고, 순서없이 저장하는 컬렉션이다.

 

 

  1) Mutable (변경 가능)

 

val 세트명 = mutableSetOf<자료형>("값1", "값2" ... )

리스트와 마찬가지로 변경가능한 컬렉션언은 앞에 mutable을 붙인다.

 

val mutableSet = mutableSetOf("apple", "banana", "orange")

// set에 grape 추가
mutableSet.add("grape")

// "banana" 제거
mutableSet.remove("banana")

println(mutableSet)

 

 

[출력결과]

[apple, orange, grape]

 

2) Immutable (변경 불가능)

 

val 세트명 = setOf<자료형>("값1", "값2" ... )

setOf 를 붙여 변경 불가능한 세트를 만든다.

 

 

val immutableSet = setOf("apple", "banana", "orange")

println(immutableSet)

 

 

[출력결과]

[apple, banana, orange]

 

o immutable

 - 형태 

 - setOf<자료형> (값1, 값2, 값3, 값1, 값1) -> setOf<자료형> (값1, 값2, 값3)

 

o mutable

 - 형태

 - mutableSetIf<자료형>(값1, 값2, 값3, 값1, 값1)

 

 

 

 

4. 맵 (Map)

 

맵(Map)은 키와 값(key - value)을 쌍으로 저장하는 컬렉션이다.

 

 

  1) Mutable (변경 가능)

 

val 맵명 = mutableMapOf("키1" to "값1", "키2" to "값2")

 

 

변경 가능한 맵(map)을 생성하기 위해서는 mutableMapOf 키워드를 작성한 후, 키와 값을 넣어준다. 키-값은 to로 연결한다.

 

 

val mutableMap = mutableMapOf("name" to "John", "age" to 30, "city" to "London")

// 맵에 키-값 쌍 추가
mutableMap["country"] = "UK"

// 맵의 age 키가 있는 키-값 쌍 제거
mutableMap.remove("age")

println(mutableMap)

 

 

[출력결과]

{name=John, city=London, country=UK}

 

 

 

  2) Immutable (변경 불가능)

 

val 맵명 = mapOf("키1" to "값1", "키2" to "값2")

 

변경 불가능한 맵(map)을 생성하기 위해서는 mapOf 키워드를 작성한 후, 변경가능한 맵과 마찬가지로 키와 값을 넣어준다. 키-값은 to로 연결한다.

 

val immutableMap = mapOf("name" to "John", "age" to 30, "city" to "London")

// map의 name 값에 접근
val name = immutableMap["name"]

println(immutableMap)
println(name)

 

 

[출력결과]

{name=John, age=30, city=London}
John

 

 

 

 

 

 

 

728x90