본문 바로가기
Android/Kotlin

[Android/Kotlin] 코틀린 컬렉션 함수: any와 all

by quessr 2025. 1. 21.

 

코틀린의 컬렉션 함수 중 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
반응형