하루만 더 일하면 6일간의 휴가가 찾아오는 즐거운 밤이네요-_-
요새 나이를 먹었는지 숙취가 하루 꼬박 가네요ㅜㅜ
코로나19의 영향으로 해외는 못나가서인지
제주도 호텔은 풀이라는 소문이...
한박자 빠르게 미리미리 준비해야
휴가도 제대로 즐길 수 있겠네요
오늘의 학습 주제는 코틀린의 컬렉션입니다
컬렉션은 연관된 값들을 모아서 저장하고
사용하는 방법을 제공하는 것을 말합니다
컬렉션에는 List, Set, Map 이렇게 세가지 종류가 있고
컬렉션에 저장된 각각의 데이터를 요소(element)라고 합니다
먼저 List에 대해 알아보겠습니다
val patronList: List<String> = listOf("Eli", "Mordoc", "Sophie")
val mutablePatronList: MutableList<String> = mutableListOf("Eli", "Mordoc", "Sophie")
val readOnlyPatronList = mutablePatronList.toList()
fun main(args: Array<String>) {
println(patronList)
println(patronList[1])
println("First : ${patronList.first()} Last : ${patronList.last()} ")
println(patronList.getOrElse(4) { "Unknown Patron" })
val fifthPatron = patronList.getOrNull(4) ?: "Unknown Patron"
println(fifthPatron)
if ( patronList.contains("Eli") ) {
println("The pub owner said: Eli is playing cards in the inner room")
} else {
println("The pub owner said: Eli is not here")
}
mutablePatronList.remove("Eli")
mutablePatronList.add("Alex")
mutablePatronList.add(2, "GuruSa")
mutablePatronList[2] = "Guru"
mutablePatronList += listOf("Shruti", "GuruSa")
mutablePatronList -= listOf("Shruti", "GuruSa")
mutablePatronList.removeIf { it.contains("o") }
for ( patron in patronList ) {
println("Good night, $patron")
}
patronList.forEach { patron ->
println("Good night, $patron")
}
patronList.forEachIndexed { index, patron ->
println("Good night, $patron - your number is ${index + 1}")
}
}
이제 Set에 대해 알아보겠습니다
Set과 List는 둘 다 같은 반복 처리 함수를 사용하고
읽기 전용과 변경 가능 버전이 존재하는 등 여러 면에서 비슷합니다
다른 점은 List는 위치(index)로 식별하기 때문에 중복된 요소를 허용하지만
Set은 고유한 요소를 가지며 인덱스와 인덱스 연산자([])를 사용해서 요소를 처리할 수 없습니다
val planets = setOf("Mercury", "Venus", "Earth")
fun main(args: Array<String>) {
println(planets)
println(planets.contains("Pluto"))
println(planets.elementAt(2))
}
Set은 인덱스 기반의 변경자 함수를 제공하지 않지만
요소의 추가와 삭제를 지원합니다
아래는 흔히 사용되는 MutableSet의 변경자 함수를 정리한 것입니다
함수 | 설명 |
add | Set에 요소를 추가한다 |
addAll | 다른 컬렉션의 모든 요소를 Set에 추가한다 |
+= | Set에 요소를 추가한다 |
-= | Set에서 요소를 제거한다 |
remove | Set에서 요소를 제거한다 |
removeAll | 다른 컬렉션의 모든 요소와 일치되는 요소를 Set에서 제거한다 |
clear | Set의 모든 요소를 삭제한다 |
마지막으로 Map에 대해 알아보고 마치겠습니다
Map은 List나 Set과 다르게 키와 값의 쌍으로 데이터가 저장되며
이 데이터를 항목(entry)라고 합니다
하나의 Map에서 키의 모든 요소는 같은 타입이어야 하고
값의 모든 요소도 같은 타입이어야 하지만
키와 값은 서로 다른 타입이 될 수 있습니다
//val patronGold = mapOf("Eli" to 10.5, "Mordoc" to 8.0, "Sophie" to 5.5)
val patronGold = mapOf(
Pair("Eli", 10.5),
Pair("Mordoc", 8.0),
Pair("Sophie", 5.5))
fun main(args: Array<String>) {
println(patronGold)
println(patronGold["Eli"])
println(patronGold.getValue("Eli"))
println(patronGold.getOrElse("Reggie") {
"No Such patron"
})
println(patronGold.getOrDefault("Reginald", 0.0))
}
위의 코드에서 to가 보이는데 to는 키워드가 아니고
to 연산자를 오버로딩(overloading)한 것입니다
또 Pair 타입을 사용해서 나타낼 수도 있습니다
아래의 표는 Map에서 값을 가져오는 함수입니다
함수 | 설명 |
[] | 키의 값을 가져오며, 키가 없으면 null을 반환한다 |
getValue | 키의 값을 가져오며, 키가 없으면 NoSuchElementException을 발생시킨다 |
getOrElse | 키의 값을 가져오거나, 또는 키가 없으면 지정된 익명 함수를 실행해서 결괏값을 반환한다 |
getOrDefault | 키의 값을 가져오거나, 또는 키가 없으면 지정한 기본값을 반환한다 |
이제 변경 가능한 Map의 변경자 함수를 소개하겠습니다
함수 | 설명 |
[] | 지정된 키의 값을 추가 또는 변경한다 |
+= | 지정된 항목을 추가 또는 변경한다 |
put | 지정된 키의 값을 추가 또는 변경한다 |
putAll | 키와 값의 쌍으로 지정된 모든 항목을 추가한다 |
getOrPut | 키가 없으면 항목을 추가하고 항목의 값을 반환하며, 있으면 기존 항목의 값을 반환한다 |
remove | 지정된 키의 항목을 제거한다 |
- | 지정된 키의 항목을 제외한 새로운 Map을 반환한다 |
-= | 지정된 키의 항목을 제거한다 |
clear | Map의 모든 항목을 제거한다 |
이것으로 오늘의 학습을 미차겠습니다
그럼 이만-_-
'Android' 카테고리의 다른 글
[Android] 코틀린(Kotlin) 클래스(Class)의 상속(Inheritance)와 타입(Type) (0) | 2020.05.04 |
---|---|
[Android] 코틀린(Kotlin) 클래스(Class) 생성과 초기화 (0) | 2020.05.04 |
[Android] 코틀린(Kotlin) 표준 라이브러리 함수(Standard Library Functions) (0) | 2020.04.26 |
[Android] 코틀린(Kotlin) 문자열(String)과 숫자(Numeric) (0) | 2020.04.21 |
[Android] 코틀린(Kotlin) null과 예외(Exception) (0) | 2020.04.18 |