When to use?
(클래스 단위) 배열 요소의 총합, 최대, 최소값을 구하려 할 때.
Why?
이전까지는 For loop을 돌려서 총합을 구했음.
selector 를 지정하여 간결하게 계산 가능.
OrderItem.kt
data class OrderItem(val itemName: String, var price : Int, var count : Int) {
}
main.kt (기존 방법)
fun main(args: Array<String>) {
val orderArray = arrayOf(OrderItem("Cake", 15000, 3),
OrderItem("Coffee", 1500, 10),
OrderItem("Tea", 2000, 10))
var sum:Int = 0
for(i in orderArray) { // 이런 방식으로 해당 배열속 요소를 직접 접근하여 합산
sum += i.count
}
println("sum : $sum")
}
실행결과
sum : 23
main.kt
fun main(args: Array<String>) {
val orderArray = arrayOf(OrderItem("Cake", 15000, 3),
OrderItem("Coffee", 1500, 10),
OrderItem("Tea", 2000, 10))
// selector it를 사용한다.
val totalCount = orderArray.sumOf {it.count}
val totalPrice = orderArray.sumOf {it.count * it.price} // 각 주문 갯수 * 가격
val minPrice = orderArray.minOf{ it.price } // 배열속 price 원소의 최소값을 반환
val maxCount = orderArray.maxOf{ it.count } // 배열속 count 원소의 최소값을 반환
println("totalCount : $totalCount")
println("totalPrice : $totalPrice")
println("minPrice : $minPrice")
println("maxCount : $maxCount")
}
실행결과
totalCount : 23
totalPrice : 80000
minPrice : 1500
maxCount : 10
Reference
kotlin docs
'JVM > Kotlin' 카테고리의 다른 글
[Kotlin] Comparator, Comparable (0) | 2022.09.16 |
---|---|
[Java, Kotlin] equals, ==, === 비교 (0) | 2022.09.16 |
[Kotlin] Companion Object (static in Java) (0) | 2020.06.28 |
[Kotlin] Null-Safe (0) | 2020.06.28 |
[Kotlin] Abstract , Interface Class (0) | 2020.03.30 |