코틀린 (Kotlin) 컬렉션 (Collection) 개념 정리

Kotlin Logo
Kotlin Logo

코틀린 (Kotlin) 컬렉션 (Collection) 개념 정리 포스트입니다.
프로그래밍 언어를 다루면 변수 이후로 가장 많이 활용되는 개념입니다.
쉽게 말해 배열 정도로 보시면 되는데, 코틀린에서는 배열을 크게 2가지로 구분하여 정의하고 있습니다.

immutable(불변) vs mutable(가변)

어렵게 불변, 가변이라는 용어를 사용하였지만, 쉽게 말하자면 ‘read-only’와 ‘read&write’의 두가지로 보면 됩니다.
읽기 전용으로 사용되는 리스트는 ‘List<T>’이며, 변경까지 가능한 리스트는 ‘MutableList<T>’입니다.
추가적으로 하나 더 알아야할 것이 있는데 ‘hashMap<K, V>’가 있습니다.

List<T>

List<T>는 한번 정의되면 그 이후로는 변경이 불가합니다.
그렇기 때문에 add와 같은 메소드가 존재하지 않습니다.

https://gist.github.com/Flature/ab3b84b75416fe27acebef235edd0f06

기본적인 List<T>의 예제 코드입니다.
단순하게 추출하는 목적으로만 사용이 가능합니다.

mutableList<T>

mutableList<T>는 List<T>와 달리 쓰기 기능까지 포함하고 있습니다.
List<T>가 가지고 있는 메소드는 기본적으로 포함하고 있으며, 추가적으로 ‘add’와 ‘remove’가 추가되어 있습니다.

https://gist.github.com/Flature/5c37a2d700196188f0f318f904c4a1b9

List<T>의 예제 코드에서 mutableList<T>로 변경하면서 추가적인 메소드를 추가해보았습니다.
위 코드를 실행하면 아래와 같은 결과값이 도출됩니다.

4
true
1
3
1 2 3 String 
1 2 3 String 추가된 변수 
2 3 String 추가된 변수 
2 3 String 추가된 변수 추가1 추가2 2 3 4 

add 메소드의 경우 현재 예제로는 값을 추가하는 것만 했지만, ‘add(0, “추가된 변수”)’와 같이 앞에 파라미터를 추가하면 리스트에서 어느 위치에 값을 추가할 것인지 까지 설정이 가능합니다.

hashMap<K, V>

hashMap은 기본 배열과 다르게 키(key)값(value)의 매핑으로 이루어진 리스트라고 보시면 됩니다.

https://gist.github.com/Flature/96fe93fd708c7d61333a5091a51367aa

hashMap에 대해 간단하게 예제를 만들었습니다.
결과 값은 아래와 같습니다.

{1=ThinkGround, 2=Flature, 3=thinkground.flature@gmail.com, 4=thinkground.org}
{1=ThinkGround, 3=thinkground.flature@gmail.com, 4=thinkground.org}
{1=ThinkGround, 2=Flature, 3=thinkground.flature@gmail.com, 4=thinkground.org}
{1=ThinkGround, 2=Thinkg.Flature, 3=thinkground.flature@gmail.com, 4=thinkground.org}

hashMap을 사용하면서 주의해야 할 점은 처음에 정의하는 부분에서 key, value의 타입에 대해 정의해주지 않아도 되지만, 그만큼 이후에 사용하는데 있어서 신경써야 하는 부분들이 생길 수 있다는 것입니다.
관련되어 예제를 만든 것이니 참고하시면 도움이 되실겁니다.

그리고 나름의 순서를 가지고 있는 것 같아 보이지만, hashMap에서는 순서에 대한 개념은 없습니다.
단지 key-value의 조합으로 구성되어 있는 집합이니 해당 값들을 활용하여 사용하시는 것이 좋습니다.

지금까지 코틀린 (Kotlin) 컬렉션(Collection) 개념 정리 포스트였습니다.
코틀린과 관련된 다른 포스트를 보고 싶으시다면 여기를 클릭해주시기 바랍니다.

Reference
코틀린 공식 홈페이지

Leave a Reply