티스토리 뷰
본 포스팅의 내용은 [깡샘의 코틀린 프로그래밍]을 공부하고 작성자가 생각을 정리하기 위해서 작성한 글이므로 더욱 자세한 내용을 알고 싶으신 분은 [깡샘의 코틀린 프로그래밍]을 강력 추천합니다!!
컬렉션 타입의 데이터를 활용하는 데 있어서 도움이 되는 함수가 많아 보여서 정리해보려고 한다.
1. 집합 연산 함수
1. 1. forEach(), forEachIndexed()
forEach()
- 단순히 컬렉션 타입의 데이터 개수만큼 특정 구문을 반복 실행할 때 유용하다.
listOf(1, 2, 3).forEach { println(it) }
forEachIndexed()
- forEach 함수와 크게 다르지 않으며 index 값도 함께 활용하고 싶을 때 유용하다.
listOf(1, 2, 3).forEach { index, value -> println("$index 번째 값 : $value")}
1. 2. all(), any()
all()
- 컬렉션 데이터의 모든 값들이 명시한 조건에 모두 만족할 경우 true를 반환하고 하나라도 만족하지 않으면 false를 반환한다.
any()
- 컬렉션 데이터의 모든 값들이 명시한 조건에 하나라도 만족할 경우 true를 반환하고 모두 만족하지 않을 경우 false를 반환한다.
listOf(1, 2, 3).all { it > 0 } // true
listOf(1, 2, 3).all { it < 2 } // false
listOf(1, 2, 3).any { it < 2 } // true
listOf(1, 2, 3).any { it < 0 } // false
1.3. count(), find()
count()
- 람다식으로 대입한 조건에 만족하는 데이터의 개수를 반환하는 함수이다.
listOf(1, 2, 3).count { it > 1 } // 2
find()
- 람다식으로 대입한 조건에 만족하는 가장 첫 번째 데이터를 반환하는 함수이다.
- 조건에 만족하는 데이터가 없으면 null을 반환한다.
listOf(1, 2, 3).find( it > 2 ) // 2
listOf(1, 2, 3).find( it > 4 ) // null
1.4. reduce(), reduceRight(), fold(), foldRight()
fold(), reduce()
- reduce(), fold() 함수에 람다 함수를 대입하면 컬렉션 타입의 데이터를 람다 함수에 차례로 전달하며 람다 함수의 결괏값을 반환해준다.
- 특징은 람다 함수에서 반환한 값을 기억하고 있다가 그 다음 데이터에 의해 호출될 때 이전에 반환했던 값을 함께 전달해 주어 참조할 수 있게 한다.
- fold() 함수는 초깃값을 지정할 수 있고 reduce() 함수는 초깃값을 지정할 수 없다.
var result = listOf(1, 2, 3).fold(10, { total, next ->
println("$total .. $next")
total + next // 마지막 값이 다음 total 값으로 들어간다.
})
println(result) // 16
foldRight(), reduceRight()
- fold()와 비슷한데 데이터의 마지막에서부터 거꾸로 반영한다.
var result = listOf(1, 2, 3).foldRight(10) { next, total ->
println("$total .. $next")
total + next
}
1.5. max(), maxBy(), min(), minBy()
- max() 함수와 min() 함수는컬렉션 타입의 데이터 중 가장 큰 값이나 작은 값을 반환하는 함수이다.
- maxBy() 함수와 minBy() 함수는 람다 함수를 매개변수로 지정하여 데이터 값이 람다 함수를 거치고 나서 가장 큰 값이나 작은 값을 반환하는 함수이다.
result = listOf(2, 5, 11).maxBy { it % 5 } // 2
1.6. none(), sumBy()
none()
- 람다 함수에서 지정한 조건에 맞는 데이터가 없으면 true, 있으면 false를 반환한다.
val result = listOf(2, 5, 11).none { it % 10 } // true
sumBy()
- 람다 함수를 거쳐 반환한 모든 값을 더하는 함수이다.
var result = listOf(1, 2, 3).sumBy { it * 10 } // 60
참고 자료
[깡샘의 코틀린 프로그래밍] 강성윤 지음 <루비페이퍼>
반응형
'Programming > 코틀린(Kotlin)' 카테고리의 다른 글
[코틀린] 14. 컬렉션 타입과 람다 - 4. 요소 함수, 5. 정렬 함수 (0) | 2021.05.02 |
---|---|
[코틀린] 14. 컬렉션 타입과 람다 - 2. 필터링 함수, 3. 매핑 함수 (0) | 2021.05.02 |
[코틀린] 코틀린 API의 범위 지정 함수 (0) | 2021.04.26 |
[코틀린] Object 클래스 (feat. 깡샘) (0) | 2021.04.25 |
[코틀린] 10. 추상 클래스와 인터페이스 (feat. 깡샘) (0) | 2021.04.12 |
댓글