[Kotlin] 컬렉션 함수(1) 설명 & 예제
- Language/Kotlin
- 2021. 2. 16.
728x90
기존의 방식 :
for(item in collection)
으로 반복해서 아이템을 꺼내어 사용
But, 코틀린은 함수형 언어의 특징을 가지고 있기 때문에 좀더 편리하게 사용 가능
컬렉션 함수
list, set, map 과 같은 컬렉션 또는 배열에 일반 함수, 또는 람다 함수 형태를 사용하여 for 문 없이도 아이템을 순회하며 참조하거나 조건을 걸고, 구조의 변경까지 가능한 여러가지 함수를 지칭
- ForEach
- it이라는 변수로 순서대로 참조 가능
- filter
- it에 조건을 걸어주면 해당하는 값만 컬렉션으로 반환됨
- map
- it에 수식을 적용 : 값을 일괄적으로 변경할 수 있음
- any, all, none -> 조건을 걸어 사용
collection.any { it == 0 }
: 하나라도 조건에 맞으면 truecollection.all { it == 0 }
: 모두 조건에 맞으면 truecollection.none { it == 0 }
: 하나도 조건에 맞지 않으면 true
first와 last를 사용하는 경우 문제가 생길 수도 있다
-> 조건에 맞는 객체가 없는 경우(= 컬렉션이 비어있는 경우)
NoSuchElementExceptionfirstOrNull
/firstOrNull
사용 하여 null 반환 할 수 있다
- first(find)
collection.first()
: 일반 함수- 컬렉션의 첫번째 아이템 반환
collection.first { it > 3 }
: 람다 함수(조건 추가)- 조건에 맞는 첫번째 아이템 반환
- last(findLast)
collection.last { it > 3 }
: 람다함수(조건 추가)- 조건에 맞는 마지막 아이템을 반환
- count
collection.count()
- 컬렉션의 모든 아이템 개수 반환
collection.count { it > 7 }
- 조건에 맞는 아이템 개수 반환
컬렉션 함수를 사용하면 반복문과 for 문을 사용하지 않고 대체 할 수 있음
예제
fun main() {
val nameList = listOf("박수영", "김지수", "김다현", "신유나", "김지우")
//박수영 김지수 김다현 신유나 김지우
nameList.forEach { print(it + " ") }
//[김지수, 김다현, 김지우]
println(nameList.filter { it.startsWith("김") })
//[이름 : 박수영, 이름 : 김지수, 이름 : 김다현, 이름 : 신유나, 이름 : 김지우]
println(nameList.map { "이름 : " + it })
println(nameList.any { it == "김지연" }) //false
println(nameList.all { it.length == 3 }) //true
println(nameList.none { it.startsWith("이") }) //true
println(nameList.first { it.startsWith("김") }) //김지수
println(nameList.last { it.startsWith("김") }) //김지우
println(nameList.count { it.startsWith("지") }) //0
}
728x90
'Language > Kotlin' 카테고리의 다른 글
[Kotlin] 변수의 고급 기술(상수, lateinit, lazy) 설명 & 예제 (0) | 2021.02.18 |
---|---|
[Kotlin] 컬렉션 함수(2) 설명 & 예제 (0) | 2021.02.16 |
[Kotlin] Set & Map 설명 & 예제 (0) | 2021.02.15 |
[Kotlin] Data Class와 Enum Class 설명 & 예제 (0) | 2021.02.15 |
[Kotlin] 중첩 클래스와 내부 클래스 설명 & 예제 (0) | 2021.02.12 |