컬렉션 타입 | 특징 |
---|---|
List | 순서가 있는 컬렉션 |
Set | Unique하고 순서가 없는 컬렉션 |
Map | Key-Value쌍을 갖고 있는 Set, Key는 Unique하고 vlaue는 key에 mapping된다. |
read-only list를 만들기 위해서 listOf()
함수를 사용한다.
mutalbe list를 만들기 위해서 mutableListOf()
함수를 사용한다.
리스트를 만들때 코틀린은 저장된 아이템의 타입을 추론한다. 타입을 명시하기 위해 angled brackets <>
을 사용할 수 있다.
val readOnlyShapes = listOf("triangle", "square", "circle")
println(readOnlyShapes)
val shapes: MutableList<String> = mutableListOf("triangle", "square", "circle")
println(shapes)
//원치 않는 수정을 방지하기 위해 mutable list를 List로 할당하여 읽기 전용으로 사용할 수 있다.
val shapesLocked: List<String> = shapes
//list는 순서가 있기 때문에 []를 사용하여 리스트의 아이템에 접근 할 수 있다.
val readOnlyShapes = listOf("triangle", "square", "circle")
println("The first item in the list is: ${readOnlyShapes[0]}")
//첫번째 또는 마지막 아이템에 접근하기 위해 .first(), .last()함수를 사용할 수 있다.
println("The first item in the list is : ${readOnlyShapes.last()}")
//list의 아이템의 갯수를 구하기 위해 .count()함수를 사용할 수 있다.
println("This list has ${readOnlyShapes.count()} itmes")
//특정 아이템이 list안에 존재하는지 확인하기 위해 in 연산자를 사용할 수 있다.
println("circle" in readOnlyShapes)
//mutable list에 아이템을 추가 또는 제거 하기위해 .add(), .remove()함수를 사용할 수 있다.
val shapes: MutableList<String> = mutableListOf("triangle", "square", "circle")
shpaes.add("pentagon")
println(shapes)
shapes.remove("pentagon")
println(shapes)
list가 순서가 있고 아이템의 중복이 허용된다면, set은 순서가 없으며 오직 unique한 아이템만이 저장된다.
read-only set을 생성하기 위해 setOf()
를 사용할 수 있다.
mutable set을 생성하기 위해 mutableSetOf()
를 사용할 수 있다.
val readOnlyFruit = setOf("alpple", "banana", "cherry", "cherry")
val fruit: MutableSet<String> = mutableSetOf("apple", "banana", "cherry", "cherry")
println(readOnlyFruit)
//cherry는 중복되기 때문에 하나는 버려진다.
set은 순서가 존재하지 않기 때문에 특정 index로 접근 할 수 없다.
//set의 아이템을 갯수를 얻기 위해 .count()함수를 사용할 수 있다.
println("this set has ${readOnlyFruit.count()} items")
//특정 아이템이 set에 존재하는 지 확인하기 위해 .count()함수를 사용할 수 있다.
println("banana" in readOnlyFruit)
//mutable set에 아이템을 추가하거나 제거하기 위해, .add(), .remove()함수를 사용할 수 있다.
val fruit: MutableSet<String> = mutableSetOf("apple", "banana", "cherry")
fruit.add("dragonfruit")
println(fruit)
fruit.remove("banana")
println(fruit)
Map은 key-value쌍을 아이템으로 저장한다. key를 사용해서 value에 접근 할 수 있다.
Map은 숫자로 된 index를 사용하지 않고 value를 찾아야 할 때 도움이 될 수 있다.
Map의 모든 key는 unique하기 때문에 Kotlin에서 어떤 value를 찾아야 하는 지 이해할 수 있다.
read-only map을 생성하기 위해 mapOf()
함수를 사용할 수 있다.
mutable map을 생성하기 위해 mutableMapOf()
함수를 사용할 수 있다.
map을 생성할때 kotlin은 저장된 아이템의 타입을 추론한다. 타입을 명시하기 위해 angled brackets <>를 사용 할 수 있다.
map을 쉽게 만드는 방법은 각 키와 밸류사이에 to
를 사용하는 것이다.
val readOnlyJuiceMenu = mapOf("apple" to 100, "kiwi" to 190, "orange" to 100)
println(readOnlyJuiceMenu)
val juiceMenu: MutableMap<String, Int> = mutableMapOf("apple" to 100, "kiwi" to 190, "orange" to 100)
println(juiceMenu)
//원치 않는 수정을 방지하기 위해 mutalbe map을 map에 캐스팅해줄 수 있다.
val juiceMenu: MutableMap<String, Int> = mutalbeMapOf("apple" to 100, "kiwi" to 190, "orange" to 100)
val juiceMenuLocked: Map<String, Int> = juiceMenu
//map의 value에 접근하기 위해 []연산자에 key를 사용할 수 있다.
println("The value of apple juice is: ${readOnlyJuiceMenu["apple"]}")
//mutable map에 아이템을 추가하거나 제거하기 위해 .put(), .remove() 함수를 사용할 수 있다.
juiceMenu.put("coconut", 150)
println(juiceMenu)
juiceMenu.remove("orange")
println(juiceMenu)
//특정 key가 map에 포함되어있는지 확인하기 위해 .containsKey()함수를 사용할 수 있다.
println(readOnlyJuiceMenu.containsKey("kiwi")
//map의 keys, values 컬렉션을 얻기 위해 .keys, .values를 사용할 수 있다.
//keys, values는 map객체의 속성이다.
println(readOnlyJuiceMenu.keys)
println(readOnlyJuiceMenu.values)
//특정 key또는 value가 map에 포함되어 있는지 확인하기 위해 in 연산자를 사용 할 수 있다.
println("orange" in readOnlyJuiceMenu.keys)
println(200 in readOnlyJuiceMenu.values)