maxBy
실제 어떤값을 비교할 것인지에 대한 식을 파라미터로 전달해 최대값을 얻는다.
public inline fun <T, R : Comparable<R>> Iterable<T>.maxBy(selector: (T) -> R):T? {
val iterator = iterator()
if (!iterator.hasNext()) return null
var maxElem = iterator.next()
var maxValue = selector(maxElem)
while (iterator.hasNext()) {
val e = iterator.next()
val v = selector(e)
if (maxValue < v) {
maxElem = e
maxValue = v
}
}
return maxElem
}
val list = listOf(Person("a", 10),
Person("b", 30),
Person("c", 15))
println(list.maxBy{ it.age }) //Person(name=b, age=30)
Last updated