default <U> Option<T> maxBy(Function<? super T, ? extends U> function, Comparator<? super U> comparator){ return foldLeft(BinaryOperator.maxBy(new Comparator<T>() { @Override public int compare(T o1, T o2) { return comparator.compare(function.apply(o1),function.apply(o2)); } })); } default <U extends Comparable<? super U>> Option<T> maxBy(Function<? super T, ? extends U> function){
default <U extends Comparable<? super U>> Option<T> minBy(Function<? super T, ? extends U> function, Comparator<? super U> comparator){ return foldLeft(BinaryOperator.minBy(new Comparator<T>() { @Override public int compare(T o1, T o2) { return comparator.compare(function.apply(o1),function.apply(o2)); } })); } default Option<T> mode(){
@Test public void testFoldLeftStringBuilder() { Supplier<Folds<String>> s = () -> of("a", "b", "c"); assertTrue(s.get().foldLeft(new StringBuilder(), (u, t) -> u.append("-").append(t)).toString().contains("a")); assertTrue(s.get().foldLeft(new StringBuilder(), (u, t) -> u.append("-").append(t)).toString().contains("b")); assertTrue(s.get().foldLeft(new StringBuilder(), (u, t) -> u.append("-").append(t)).toString().contains("c")); assertTrue(s.get().foldLeft(new StringBuilder(), (u, t) -> u.append("-").append(t)).toString().contains("-")); assertEquals(3, (int) s.get().foldLeft(0, (u, t) -> u + t.length())); }
public void testFoldLeft() { for(int i=0;i<100;i++){ Supplier<Folds<String>> s = () -> of("a", "b", "c"); assertTrue(s.get().foldLeft("", String::concat).contains("a")); assertTrue(s.get().foldLeft("", String::concat).contains("b")); assertTrue(s.get().foldLeft("", String::concat).contains("c")); assertEquals(3, (int) s.get().foldLeft(0, (u, t) -> u + t.length())); assertEquals(3, (int) s.get().foldRight(0, (t, u) -> u + t.length())); } }
default <U> Option<T> maxBy(Function<? super T, ? extends U> function, Comparator<? super U> comparator){ return foldLeft(BinaryOperator.maxBy(new Comparator<T>() { @Override public int compare(T o1, T o2) { return comparator.compare(function.apply(o1),function.apply(o2)); } })); } default <U extends Comparable<? super U>> Option<T> maxBy(Function<? super T, ? extends U> function){
default <U extends Comparable<? super U>> Option<T> minBy(Function<? super T, ? extends U> function, Comparator<? super U> comparator){ return foldLeft(BinaryOperator.minBy(new Comparator<T>() { @Override public int compare(T o1, T o2) { return comparator.compare(function.apply(o1),function.apply(o2)); } })); } default Option<T> mode(){