default <U extends Comparable<? super U>> Option<T> maxBy(Function<? super T, ? extends U> function){ return maxBy(function, Comparator.naturalOrder()); } default <U extends Comparable<? super U>> Option<T> minBy(Function<? super T, ? extends U> function){
@Test public void testMinByMaxBy() { Supplier<Folds<Integer>> s = () -> of(1, 2, 3, 4, 5, 6); assertEquals(1, (int) s.get().maxBy(t -> Math.abs(t - 5)).orElse(-1)); assertEquals(5, (int) s.get().minBy(t -> Math.abs(t - 5)).orElse(-1)); assertEquals(6, (int) s.get().maxBy(t -> "" + t).orElse(-1)); assertEquals(1, (int) s.get().minBy(t -> "" + t).orElse(-1)); }
default <U extends Comparable<? super U>> Option<T> maxBy(Function<? super T, ? extends U> function){ return maxBy(function, Comparator.naturalOrder()); } default <U extends Comparable<? super U>> Option<T> minBy(Function<? super T, ? extends U> function){