코틀린의 컬렉션 함수 중 any와 all은 컬렉션 내부의 요소를 조건에 따라 검사할 때 사용하는 매우 유용한 함수입니다.
이 두 함수는 조건을 간단하고 가독성 좋게 표현할 수 있어 자주 활용됩니다.\
1. any 함수
정의
- 컬렉션의 요소 중 하나라도 조건을 만족하면 true를 반환.
- 조건을 만족하는 요소를 찾으면 즉시 검사를 종료합니다.
구문
collection.any { 조건식 }
반환값
- Boolean: 조건을 만족하는 요소가 하나라도 있으면 true, 그렇지 않으면 false.
예제 1: 숫자 리스트에서 짝수가 하나라도 있는지 확인
val numbers = listOf(1, 3, 5, 6, 7)
val hasEven = numbers.any { it % 2 == 0 }
println(hasEven) // 출력: true
- 리스트에 짝수(6)가 있으므로 true를 반환.
예제 2: 비어 있는 리스트 검사
val emptyList = listOf<Int>()
println(emptyList.any()) // 출력: false
- 리스트에 요소가 없으므로 false를 반환.
활용 예제: 중요도가 높은 문서 검사
val queue = listOf(3, 1, 5, 2)
val currentPriority = 3
val hasHigherPriority = queue.any { it > currentPriority }
println(hasHigherPriority) // 출력: true
2. all 함수
정의
- 컬렉션의 모든 요소가 조건을 만족해야 true를 반환.
- 하나라도 조건을 만족하지 않으면 즉시 false를 반환하고 검사를 종료합니다.
구문
collection.all { 조건식 }
반환값
- Boolean: 모든 요소가 조건을 만족하면 true, 그렇지 않으면 false.
예제 1: 숫자 리스트에서 모두 양수인지 확인
val numbers = listOf(1, 3, 5, 6, 7)
val allPositive = numbers.all { it > 0 }
println(allPositive) // 출력: true
- 리스트의 모든 요소가 양수이므로 true를 반환.
예제 2: 문자열 리스트에서 모두 특정 길이를 만족하는지 확인
val words = listOf("apple", "banana", "cherry")
val allLongerThanFive = words.all { it.length > 5 }
println(allLongerThanFive) // 출력: false
- "apple"은 길이가 5 이하이므로 false를 반환.
활용 예제: 문서의 중요도가 모두 낮은지 확인
val queue = listOf(3, 1, 5, 2)
val threshold = 6
val allBelowThreshold = queue.all { it < threshold }
println(allBelowThreshold) // 출력: true
3. any vs all 비교
특성 | any | all |
검사 대상 | 하나라도 조건을 만족하면 true | 모두 조건을 만족해야 true |
결과 반환 시점 | 조건을 만족하는 요소를 찾으면 즉시 종료 | 조건을 만족하지 않는 요소를 찾으면 즉시 종료 |
빈 컬렉션 결과 | 항상 false | 항상 true |
사용 예 | 특정 조건의 요소가 있는지 확인 | 모든 요소가 조건을 만족하는지 확인 |
4. any와 all 활용 비교 예제
문제: 중요도 리스트에서 특정 조건 확인
1. any: 중요도가 5 이상인 문서가 하나라도 있는지 확인
val priorities = listOf(3, 1, 5, 2)
val hasHighPriority = priorities.any { it >= 5 }
println(hasHighPriority) // 출력: true
2. all: 모든 문서가 중요도가 5 이하인지 확인
val priorities = listOf(3, 1, 5, 2)
val allLowPriority = priorities.all { it <= 5 }
println(allLowPriority) // 출력: true
5. 시간 복잡도
- 최선의 경우: 조건을 만족하는 요소를 찾거나 찾지 못한 즉시 종료.
- 최악의 경우: 컬렉션의 모든 요소를 검사.
- 시간 복잡도:
- 일반적으로 O(n), 컬렉션의 크기에 비례.
6. 정리: 어떤 상황에서 사용할까?
상황 | 추천 함수 |
하나라도 조건을 만족하면 되는 경우 | any |
모두 조건을 만족해야 하는 경우 | all |
반응형
'Android > Kotlin' 카테고리의 다른 글
[Android/Kotlin] fold 사용법과 예제 (0) | 2025.02.05 |
---|---|
[Android/Kotlin] 코틀린의 mutableMapOf()는 왜 LinkedHashMap을 사용할까? (0) | 2025.02.04 |
[Android/Kotlin] removeAt: 요소 제거와 반환 동작 이해 (1) | 2025.01.17 |
[Android/Kotlin] sortWith vs sortedWith: 차이와 사용법 (0) | 2025.01.02 |
[Android/Kotlin] Kotlin의 ?. 연산자와 ?: 연산자: 실제 예시로 이해하기 (1) | 2024.11.29 |