Hanbit the Developer
Kotlin Documentation | Aggregate operations 본문
Category: Standard library - Collections
문서 링크: https://kotlinlang.org/docs/collection-aggregate.html
- minOrNull(), maxOrNull()
- average()
- sum()
- sumOf()
val numbers = listOf(5, 42, 10, 4) println(numbers.sumOf { it * 2 }) println(numbers.sumOf { it.toDouble() / 2 })
122 30.5
- count()
셀렉터를 이용하여 최소값 및 최대값을 검색하는 함수:
- maxByOrNull(), minByOrNull()
- maxWithOrNull(), minWithOrNull()
- maxOfOrNull(), minOfOrNull()
- maxOfWithOrNull(), minOfWithOrNull()
Fold and reduce
컬렉션을 돌면서 값을 모으는 함수이다.
- fold(): 초기값이 있다.
- reduce(): 초기값이 item[0]이며, item[1]부터 반복을 시작한다.
val numbers = listOf(1, 2, 3, 4)
val sumDoubled = numbers.fold(3) { sum, element -> println("sum: $sum, element: $element"); sum + element * 2 }
println(sumDoubled)
val simpleSum = numbers.reduce { sum, element -> println("sum: $sum, element: $element"); sum + element }
println(simpleSum)
// 1 + 2*2 + 3*2 + 4*2가 수행된다.(1*2 + 2*2 + 3*2 + 4*2가 아니라)
// val sumDoubledReduce = numbers.reduce { sum, element -> sum + element * 2 }
// println(sumDoubledReduce)
sum: 3, element: 1
sum: 5, element: 2
sum: 9, element: 3
sum: 15, element: 4
23
sum: 1, element: 2
sum: 3, element: 3
sum: 6, element: 4
10
- foldRight(), reduceRight(): apply a function to elements in the reverse order
- foldIndexed(), reduceIndexed()
- foldRightIndexed(), reduceRightIndexed()
reduce 명령들은 컬렉션이 비어있을 때 예외를 던지는데, 대신 null을 받고자 할 경우 *OrNull() 함수를 호출한다.(e.g. reduceOrNull())
runningFold(), runningReduce(): 중간 결과들을 모두 저장한 컬렉션을 반환한다.
val numbers = listOf(0, 1, 2, 3, 4, 5)
val runningFoldSum = numbers.runningFold(10) { sum, item -> sum + item }
val runningReduceSum = numbers.runningReduce { sum, item -> sum + item }
println(runningFoldSum)
println(runningReduceSum)
[10, 10, 11, 13, 16, 20, 25]
[0, 1, 3, 6, 10, 15]
- runningFoldIndexed(), runningReduceIndexed()
'Kotlin' 카테고리의 다른 글
Kotlin Documentation | List-specific operations (0) | 2023.05.24 |
---|---|
Kotlin Documentation | Write operations (0) | 2023.05.24 |
Kotlin Documentation | Ordering (0) | 2023.05.24 |
Kotlin Documentation | Retrieve single elements (0) | 2023.05.24 |
Kotlin Documentation | Retrieve collection parts (0) | 2023.05.24 |