컬렉션의 최댓값을 찾는 함수이다. 컬렉션이 비어 있을 경우 null을 반환한다.
인자를 받지 않으므로 항상 소괄호를 사용한다.
val numbers = listOf(3, 1, 4, 1, 5, 9)
val max = numbers.maxOrNull() // 소괄호 사용
println(max) // 출력: 9
특정 조건에 따라 최댓값을 찾는 함수이다. 컬렉션이 비어 있을 경우 null을 반환한다.
람다 표현식을 받아 조건을 기반으로 최댓값을 반환 한다.
data class Person(val name: String, val age: Int)
val people = listOf(Person("Alice", 30), Person("Bob", 25), Person("Charlie", 35))
val maxAge = people.maxOfOrNull { it.age }
println(maxAge) // 출력: 35
특정 조건에 따라 최댓값을 찾는 함수이다. 컬렉션이 비어 있을 경우 null을 반환한다.
람다 표현식을 받아 조건을 기반으로 최댓값을 가진 요소를 반환 한다.
data class Person(val name: String, val age: Int)
val people = listOf(Person("Alice", 30), Person("Bob", 25), Person("Charlie", 35))
val oldestPerson = people.maxByOrNull { it.age }
println(oldestPerson) // 출력: Person(name=Charlie, age=35)
maxByOrNull vs maxOfOrNull
- maxByOrNull
최댓값을 가진 요소를 반환 ex) people.maxByOrNull { it.age } -> Person 객체 반환- maxOfOrNull
최댓값을 반환 ex) people.maxOfOrNull { it.age } -> Int 반환
사용자 정의 Comparator를 사용하여 최댓값을 찾는다.
Comparator를 사용해야 하므로 보통 소괄호 안에 Comparator를 직접 작성한다.
val numbers = listOf(3, 1, 4, 1, 5, 9)
val max = numbers.maxWithOrNull(compareBy { it % 3 }) // 소괄호 사용
println(max) // 출력: 5 (3으로 나눈 나머지가 최대인 값)