Итак, я немного разбираюсь в функциональном программировании, но для этого я не могу использовать al oop и вместо этого должен использовать написанную мной функцию foldLeft или foldRight, чтобы получить minVal.
static <U,V> V foldLeft(V e, Iterable<U>l, BiFunction<V,U,V> f){
for(U u:l) {
e = f.apply(e, u);
}
return e;
}
static <U,V> V foldRight(V e, Iterable<U>l, BiFunction<U,V,V> f){
for(U u:l) {
e = f.apply(u, e);
}
return e;
Теперь мне нужно написать minVal:
//(5) Use minVal to calculate the minimum of a List of
// Integers
static <U> U minVal(Iterable<U> l, Comparator<U> c){
// write using fold. No other loops permitted.
List<U> temp = new ArrayList<U>();
l.forEach(temp::add);
return temp.stream().min(c).get(); //Not sure if this actually works yet
}
Я попытался написать и протестировать его, но теперь я застрял на том же, я бы протестировал minVal:
List<Integer> numList = new ArrayList<>();
numList.add(5);
numList.add(10);
numList.add(15);
numList.add(20);
numList.add(22);
numList.add(1);
System.out.println(minVal(numList, 0)); //What would I place as the
//comparable argument
Выше, конечно, дает мне ошибку. Я читал о Компараторах в Lambda, но не понимаю, как реализовать это в тесте (или в выражении print).
Любая помощь / объяснение приветствуется! PS Пожалуйста, дайте мне знать, если мне не хватает какой-либо информации, я старался быть максимально тщательным.