Collection 이란?
Collection은 자바에서 제공하는 기본 자료 구조를 모아 사용을 편하게 하기 위해 제공하는 프레임워크를 말하고 종류가 되게 많습니다. 그중 대표적인 List Set Map에 대해 알아보도록 하겠습니다.
List
List는 데이터가 저장하거나 삭제될 때 순서를 지킵니다. List는 변할 수 있는(Mutable) 방식과 변할 수 없는 (Immutable) 방식을 모두 지원합니다.
List Immutable
fun main(){
val numberList = listOf<Int>(1,2,3)
val stringList = listOf("apple","banana","mango")
println(numberList)
println(stringList)
println("Third element: ${stringList.get(2)}")
// 실행결과
// [1,2,3]
// [apple, banana, mango"]
// Third element : mango
}
형식은 listof<타입>(아이템)으로, Immutable 리스트를 생성 및 초기화할 수 있습니다. 코틀린은 아이템 타입을 추론하기 때문에 아이템을 생략할 수 있습니다. list의 Immutable 방식은 get 만 사용 가능합니다
List Mutable
fun main(){
val stringList = mutableListOf("apple","banana","mango")
stringList.remove("apple")
stringList.add("cherry")
println(stringList)
// 실행결과 = [banana, mango, cherry]
}
Mutable List 는 수정이 가능한 List로 "mutableListOf"로 선언합니다. 일반적은 listOf과 똑같아 추가 및 삭제가 가능합니다.
Set
Set은 중복되는 아이템을 가질 수 없는 Collection입니다. 또한 순서가 정해져 있지 않습니다. 아이템에 null을 가질 수 있지만 동일한 아이템은 가질 수 없으므로 null도 하나의 아이템만 가질 수 있습니다. Set도 List와 같이 Immutable과 Mutable이 있습니다.
Set Immutable
val numbers = setOf<Int>(1, 2, 3, 4, 1)
println(numbers)
println(numbers.size)
// 실행결과
// [1,2,3,4]
// 4
중복되는 값을 가질 수 없으므로 위의 numbers는 1을 하나만 가질 수 있습니다. 또한 이외에도 contain, isEmpty, forEach 등을 사용할 수 있습니다.
Set Mutable
@RequiresApi(Build.VERSION_CODES.N)
fun main(){
val numbers = mutableSetOf<Int>(1, 2, 3, 4, 5)
numbers.add(6)
numbers.remove(3)
println(numbers)
numbers.add(11)
numbers.removeIf { it < 10 }
println(numbers)
// 실행결과
// [1, 2, 4, 5, 6]
// [11]
}
Set의 Mutable은 변경이 가능하므로 추가 삭제가 가능합니다. List의 Mutable과 비슷한 메서드(add remove)를 지원합니다.
Map
Map은 Java처럼 Key-Value를 짝지어 저장하는 Collection입니다. Map의 Key는 유일해야 하므로 똑같은 이름의 Key를 가질 수 없습니다. Map 또한 Immutable과 Mutable 이 있습니다.
Map Immutable
fun main(){
val numbers = mapOf<String,String>(
"one" to "first",
"two" to "second",
"three" to "third")
println(numbers)
val strings = mapOf<String,String>(
Pair("Food","Apple"),
Pair("Animal","Monkey"))
println(strings)
// 실행결과
// {one=first, two=second, three=third}
// {Food=Apple, Animal=Monkey}
}
Pair 또는 to로 아이템을 표현합니다. 형식은 Pair(key,value) , "A" to "B"로 간단히 표현이 가능합니다. 이렇게 표현이 가능한 이유는 infix 함수 때문이라고.. Infix 함수는 두 개의 변수 가운데 오는 함수를 말합니다
Map Mutable
fun main() {
val numbers = mutableMapOf<String, String>(
"one" to "first",
"two" to "second",
"three" to "third"
)
numbers.put("four", "fourth")
numbers["five"] = "fifth"
numbers.remove("one")
println(numbers)
// 실행결과
// {two=second, three=third, four=fourth, five=fifth}
}
Map의 Mutable은 put 또는 remove로 아이템을 추가하거나 삭제합니다. 변수[key] = value 형식으로도 put을 사용할 수 있습니다. 이외에도 clear 등의 메서드가 있습니다.
마지막으로
지금까지 코틀린의 대표적인 Collection List, Set, Map에 대해 알아보았습니다.
참고 : https://kotlinlang.org/docs/collections-overview.html#map
'Android > Kotlin' 카테고리의 다른 글
[Android/Kotlin] LiveData에 대해 알아보자! (0) | 2022.04.26 |
---|---|
[Android/Kotlin] ViewModelFactory를 사용하자! (0) | 2022.04.20 |
[Android/Kotlin] RecyclerView에 대해 알아보자! (0) | 2022.03.26 |
[Android/Kotlin] Intent를 사용하자! (0) | 2022.03.25 |