ary:
Estoy abordar un ejercicio que pide para crear una interfaz funcional cuyo método toma como entrada un entero k y una matriz de enteros y devuelve un entero. Entonces, debería asignar a una instancia de la interfaz de una expresión lambda que devuelve la suma de todos los valores de la matriz de menos de o igual a k.
Para la interfaz Creo que debería hacer algo como:
@FunctionalInterface
public interface FunctionOnAnArray {
int apply(int k, int ... intArray);
}
Sin embargo, no puedo averiguar la expresión lambda.
public class Test {
int sum = 0;
FunctionOnAnArray f = (k, intArray) -> { for (int i : intArray) if (i <= k) sum += i; return sum; };
}
Esto parece demasiado torpe.
también:
Se podría simplificar como:
FunctionOnAnArray f = (k, arr) -> Arrays.stream(arr)
.filter(a -> a <= k)
.sum();
Aparte : También puede optar por no definir la interfaz con Varargs y actualización como:
@FunctionalInterface
public interface FunctionOnAnArray {
int apply(int k, int[] arr);
}