maxBy<T, R extends Comparable<Object>> function

T? maxBy<T, R extends Comparable<Object>>(
  1. Iterable<T> iterable,
  2. R accessor(
    1. T
    )
)

Returns the maximum value using an accessor function.

Implementation

T? maxBy<T, R extends Comparable<Object>>(
  Iterable<T> iterable,
  R Function(T) accessor,
) {
  final iterator = iterable.iterator;
  if (!iterator.moveNext()) return null;

  T maxElement = iterator.current;
  R maxValue = accessor(maxElement);

  while (iterator.moveNext()) {
    final value = accessor(iterator.current);
    if (value.compareTo(maxValue) > 0) {
      maxElement = iterator.current;
      maxValue = value;
    }
  }
  return maxElement;
}