반응형
코틀린에 list, set, map이라는 개념이 존재한다.
이것들은 인터페이스를 타입으로 표현한 클래스이며 통틀어 컬렉션 타입 클래스라고 한다.
(코틀린에서 컬렉션은 데이터를 저장하고 조작할 때 사용되는 기본적인 구조이다.)
▷ List, Set, Map
List : 순서가 있는 데이터 집합으로 데이터의 중복을 허용한다.
Set : 순서가 ㅏ없으며 데이터의 중복을 허용하지 않는다.
Map : 키와 값으로 이루어진 데이터 집합으로 순서가 없으며 키의 중복은 허용하지 않는다.
이 3가지는 모두 불변 클래스와 가변 클래스를 가지고 있다.
아래 표를 보면서 이해해 보자.
type | function | feature | |
List | List | listOf() | 불변 |
MutableList | mutableListOf() | 가변 | |
Set | Set | setOf() | 불변 |
MutableSet | mutableSetOf() | 가변 | |
Map | Map | mapOf() | 불변 |
MutableMap | mutableMapOf() | 가변 |
불변 클래스는 초기에 데이터를 대입하면 더 이상 변경할 수 없는 타입을 의미한다.
가변 클래스는 초깃값을 대입한 후에도 데이터를 추가하거나 변경이 가능한 것을 의미한다.
아래 예제를 살펴보자.
fun main(){
var list = listOf<Int> (10, 20, 30) // 불변
println("list size : ${list.size}")
println("list[0] data : ${list.get(0)}")
var mutablelist = mutableListOf<Int> (10, 20, 30) // 가변
mutablelist.add(3, 40) // 인덱스 3에 40을 추가
mutablelist.set(0, 50) // 인덱스 0의 값을 50으로 변경
println("mutablelist size : ${mutablelist.size}")
println("mutablelist[0] data : ${mutablelist.get(0)}")
var map = mapOf<String, String> (Pair("one", "hello"), "two" to "world")
println("map size : ${map.size}")
println("map data : ${map.get("one")}, ${map.get("two")}")
}
출력 결과
list size : 3
list[0] data : 10
mutablelist size : 4
mutablelist[0] data : 50
map size : 2
map data : hello, world
불변 리스트 (listOf):
- list는 listOf를 사용해 생성된 불변 리스트입니다. 불변 리스트는 생성 후 수정할 수 없습니다.
- list.size는 리스트의 크기(요소의 개수)를 반환합니다.
- list.get(0)은 리스트의 첫 번째 요소를 가져옵니다.
가변 리스트 (mutableListOf):
- mutablelist는 mutableListOf를 사용해 생성된 가변 리스트입니다. 가변 리스트는 생성 후 요소를 추가하거나 수정할 수 있습니다.
- mutablelist.add(3, 40)은 리스트의 네 번째 위치(인덱스 3)에 40을 추가합니다.
- mutablelist.set(0, 50)은 리스트의 첫 번째 요소를 50으로 변경합니다.
맵 (mapOf):
- map은 mapOf를 사용해 생성된 불변 맵입니다. 이 맵은 키-값 쌍으로 이루어져 있으며, "one" 키에는 "hello"가, "two" 키에는 "world"가 대응됩니다.
- Pair("one", "hello")처럼 키 값을 Pair 객체로 표현해 Map에 대입해도 된다.
- map.size는 맵의 크기(키-값 쌍의 개수)를 반환합니다.
- map.get("one")과 map.get("two")는 각각 "one"과 "two" 키에 대응하는 값을 반환합니다.
코틀린에서 제공하는 List, Set, Map은 각각의 특징과 용도가 다르다.
List는 순서가 있는 데이터를 관리할 때, Set은 고유한 데이터를 관리할 때, Map은 키-값 쌍의 데이터를 관리할 때 유용하게 사용할 수 있습니다.
각 컬렉션은 불변형과 가변형이 있으며, 상황에 맞게 적절한 타입을 선택하여 사용하면 코틀린의 강력한 컬렉션 기능을 최대한 활용할 수 있습니다.
위 글 개념 오류 혹은 코드 오류가 있다면 댓글로 알려주시면 감사합니다!
반응형
'언어 공부하기 > 코들린 개념' 카테고리의 다른 글
[망댕이의 Kotlin] 코틀린 조건문에 대해 빠르게 알아보기 (코틀린 if, else, when) (0) | 2024.09.03 |
---|---|
[망댕이의 Kotlin] 코틀린 함수 개념, 함수 fun 선언하기(코틀린 함수) (0) | 2024.08.02 |
[망댕이의 Kotlin] 코틀린 기본 개념, 변수 선언 및 초기값 할당 알아보기(코틀린 선언) (0) | 2024.07.08 |
[망댕이의 Kotlin] if~ else문과 if~else문 표현식 알아보기(코틀린 조건문) (0) | 2024.07.02 |